annotate WebContent/mmpa/geotemco.js @ 6:a7c8d212f5f4 JS-viewer tip

exchanged e4D for new JS-viewer (GeoTemCo) + whitespace-changes (sorry!)
author Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
date Tue, 22 Jan 2013 15:12:30 +0100
parents 2715bff4628d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 /*! jQuery v1.7.2 jquery.com | jquery.org/license */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2 (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 .clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 * basic.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 * basic code which is included first for the minified version
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
33
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 var arrayIndex = function(array, obj) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 if (Array.indexOf) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 return array.indexOf(obj);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 for (var i = 0; i < array.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 if (array[i] == obj) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 var GeoTemCoMinifier_urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 for (var i = 0; i < document.getElementsByTagName("script").length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 var script = document.getElementsByTagName("script")[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 var index = script.src.indexOf("geotemco.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 if (index == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 index = script.src.indexOf("geotemco-min.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 if (index != -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 GeoTemCoMinifier_urlPrefix = script.src.substring(0, index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 // Copyright 2006 Google Inc.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 // Licensed under the Apache License, Version 2.0 (the "License");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 // you may not use this file except in compliance with the License.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 // You may obtain a copy of the License at
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 // http://www.apache.org/licenses/LICENSE-2.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 // Unless required by applicable law or agreed to in writing, software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 // distributed under the License is distributed on an "AS IS" BASIS,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 // See the License for the specific language governing permissions and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 // limitations under the License.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
70
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
71
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 // Known Issues:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 // * Patterns are not implemented.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 // * Radial gradient are not implemented. The VML version of these look very
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 // different from the canvas one.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 // * Clipping paths are not implemented.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 // * Coordsize. The width and height attribute have higher priority than the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 // width and height style values which isn't correct.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 // * Painting mode isn't implemented.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 // * Canvas width/height should is using content-box by default. IE in
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 // Quirks mode will draw the canvas using border-box. Either change your
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 // doctype to HTML5
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 // (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 // or use Box Sizing Behavior from WebFX
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 // (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 // * Non uniform scaling does not correctly scale strokes.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 // * Optimize. There is always room for speed improvements.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
89
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 // Only add this code if we do not already have a canvas implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 if (!document.createElement('canvas').getContext) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
92
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
94
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 // alias some functions to make (compiled) code shorter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 var m = Math;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 var mr = m.round;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 var ms = m.sin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 var mc = m.cos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 var abs = m.abs;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 var sqrt = m.sqrt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
102
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 // this is used for sub pixel precision
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 var Z = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 var Z2 = Z / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
106
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 * This funtion is assigned to the <canvas> elements as element.getContext().
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 * @this {HTMLElement}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 * @return {CanvasRenderingContext2D_}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 function getContext() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 return this.context_ ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 (this.context_ = new CanvasRenderingContext2D_(this));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
116
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 var slice = Array.prototype.slice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
118
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
119 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 * Binds a function to an object. The returned function will always use the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 * passed in {@code obj} as {@code this}.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 * Example:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
124 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 * g = bind(f, obj, a, b)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 * g(c, d) // will do f.call(obj, a, b, c, d)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
127 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 * @param {Function} f The function to bind the object to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 * @param {Object} obj The object that should act as this when the function
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 * is called
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 * @param {*} var_args Rest arguments that will be used as the initial
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 * arguments when the function is called
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 * @return {Function} A new function that has bound this
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 function bind(f, obj, var_args) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 var a = slice.call(arguments, 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 return function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 return f.apply(obj, a.concat(slice.call(arguments)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
141
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 var G_vmlCanvasManager_ = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 init: function(opt_doc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 if (/MSIE/.test(navigator.userAgent) && !window.opera) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 var doc = opt_doc || document;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 // Create a dummy element so that IE will allow canvas elements to be
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 // recognized.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 doc.createElement('canvas');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
150 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
152
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 init_: function(doc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 // create xmlns
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 if (!doc.namespaces['g_vml_']) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 '#default#VML');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
158
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 if (!doc.namespaces['g_o_']) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 '#default#VML');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
164
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 // Setup default CSS. Only add one style sheet per document
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
166 if (!doc.styleSheets['ex_canvas_']) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 var ss = doc.createStyleSheet();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 ss.owningElement.id = 'ex_canvas_';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 // default size is 300x150 in Gecko and Opera
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 'text-align:left;width:300px;height:150px}' +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 'g_vml_\\:*{behavior:url(#default#VML)}' +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 'g_o_\\:*{behavior:url(#default#VML)}';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
174
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
176
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 // find all canvas elements
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 var els = doc.getElementsByTagName('canvas');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 for (var i = 0; i < els.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 this.initElement(els[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
183
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 * Public initializes a canvas element so that it can be used as canvas
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 * element from now on. This is called automatically before the page is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 * loaded but if you are creating elements using createElement you need to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 * make sure this is called on the element.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 * @param {HTMLElement} el The canvas element to initialize.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 * @return {HTMLElement} the element that was created.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 initElement: function(el) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 if (!el.getContext) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
194
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 el.getContext = getContext;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
196
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 // Remove fallback content. There is no way to hide text nodes so we
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
198 // just remove all childNodes. We could hide all elements and remove
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 // text nodes but who really cares about the fallback content.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 el.innerHTML = '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
201
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 // do not use inline function because that will leak memory
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
203 el.attachEvent('onpropertychange', onPropertyChange);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 el.attachEvent('onresize', onResize);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
205
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 var attrs = el.attributes;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 if (attrs.width && attrs.width.specified) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 // TODO: use runtimeStyle and coordsize
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 // el.getContext().setWidth_(attrs.width.nodeValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
210 el.style.width = attrs.width.nodeValue + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 el.width = el.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
213 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 if (attrs.height && attrs.height.specified) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 // TODO: use runtimeStyle and coordsize
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 // el.getContext().setHeight_(attrs.height.nodeValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 el.style.height = attrs.height.nodeValue + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
218 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 el.height = el.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
220 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 //el.getContext().setCoordsize_()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 return el;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
225 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
226
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 function onPropertyChange(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 var el = e.srcElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
229
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 switch (e.propertyName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 case 'width':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 el.style.width = el.attributes.width.nodeValue + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 el.getContext().clearRect();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 case 'height':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 el.style.height = el.attributes.height.nodeValue + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 el.getContext().clearRect();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
239 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
241
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
242 function onResize(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
243 var el = e.srcElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 if (el.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
245 el.firstChild.style.width = el.clientWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
246 el.firstChild.style.height = el.clientHeight + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
247 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
248 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
249
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
250 G_vmlCanvasManager_.init();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
251
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
252 // precompute "00" to "FF"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
253 var dec2hex = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
254 for (var i = 0; i < 16; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
255 for (var j = 0; j < 16; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
257 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
258 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
259
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
260 function createMatrixIdentity() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
261 return [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
262 [1, 0, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
263 [0, 1, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 [0, 0, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
265 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
267
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
268 function matrixMultiply(m1, m2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
269 var result = createMatrixIdentity();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
271 for (var x = 0; x < 3; x++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
272 for (var y = 0; y < 3; y++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
273 var sum = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
274
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
275 for (var z = 0; z < 3; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
276 sum += m1[x][z] * m2[z][y];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
277 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
278
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
279 result[x][y] = sum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
280 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
281 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
282 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
283 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
285 function copyState(o1, o2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
286 o2.fillStyle = o1.fillStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
287 o2.lineCap = o1.lineCap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
288 o2.lineJoin = o1.lineJoin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
289 o2.lineWidth = o1.lineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
290 o2.miterLimit = o1.miterLimit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
291 o2.shadowBlur = o1.shadowBlur;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
292 o2.shadowColor = o1.shadowColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
293 o2.shadowOffsetX = o1.shadowOffsetX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
294 o2.shadowOffsetY = o1.shadowOffsetY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
295 o2.strokeStyle = o1.strokeStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
296 o2.globalAlpha = o1.globalAlpha;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
297 o2.arcScaleX_ = o1.arcScaleX_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
298 o2.arcScaleY_ = o1.arcScaleY_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
299 o2.lineScale_ = o1.lineScale_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
300 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
301
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
302 function processStyle(styleString) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
303 var str, alpha = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
304
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
305 styleString = String(styleString);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
306 if (styleString.substring(0, 3) == 'rgb') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
307 var start = styleString.indexOf('(', 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
308 var end = styleString.indexOf(')', start + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
309 var guts = styleString.substring(start + 1, end).split(',');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
310
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
311 str = '#';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
312 for (var i = 0; i < 3; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
313 str += dec2hex[Number(guts[i])];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
314 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
316 if (guts.length == 4 && styleString.substr(3, 1) == 'a') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
317 alpha = guts[3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
318 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
319 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
320 str = styleString;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
321 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
322
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
323 return {color: str, alpha: alpha};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
324 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
325
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
326 function processLineCap(lineCap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
327 switch (lineCap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
328 case 'butt':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
329 return 'flat';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
330 case 'round':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
331 return 'round';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
332 case 'square':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
333 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
334 return 'square';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
335 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
336 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
338 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
339 * This class implements CanvasRenderingContext2D interface as described by
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
340 * the WHATWG.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
341 * @param {HTMLElement} surfaceElement The element that the 2D context should
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
342 * be associated with
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
343 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
344 function CanvasRenderingContext2D_(surfaceElement) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
345 this.m_ = createMatrixIdentity();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
346
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
347 this.mStack_ = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
348 this.aStack_ = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
349 this.currentPath_ = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
350
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
351 // Canvas context properties
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
352 this.strokeStyle = '#000';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
353 this.fillStyle = '#000';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
354
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
355 this.lineWidth = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
356 this.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
357 this.lineCap = 'butt';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
358 this.miterLimit = Z * 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
359 this.globalAlpha = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
360 this.canvas = surfaceElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
361
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
362 var el = surfaceElement.ownerDocument.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
363 el.style.width = surfaceElement.clientWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
364 el.style.height = surfaceElement.clientHeight + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
365 el.style.overflow = 'hidden';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
366 el.style.position = 'absolute';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
367 surfaceElement.appendChild(el);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
369 this.element_ = el;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
370 this.arcScaleX_ = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
371 this.arcScaleY_ = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
372 this.lineScale_ = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
373 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
374
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
375 var contextPrototype = CanvasRenderingContext2D_.prototype;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
376 contextPrototype.clearRect = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
377 this.element_.innerHTML = '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
378 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
379
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
380 contextPrototype.beginPath = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
381 // TODO: Branch current matrix so that save/restore has no effect
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
382 // as per safari docs.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
383 this.currentPath_ = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
384 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
386 contextPrototype.moveTo = function(aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
387 var p = this.getCoords_(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
388 this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
389 this.currentX_ = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
390 this.currentY_ = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
391 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
392
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
393 contextPrototype.lineTo = function(aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
394 var p = this.getCoords_(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
395 this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
396
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
397 this.currentX_ = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
398 this.currentY_ = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
399 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
400
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
401 contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
402 aCP2x, aCP2y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
403 aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
404 var p = this.getCoords_(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
405 var cp1 = this.getCoords_(aCP1x, aCP1y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
406 var cp2 = this.getCoords_(aCP2x, aCP2y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
407 bezierCurveTo(this, cp1, cp2, p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
408 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
409
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
410 // Helper function that takes the already fixed cordinates.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
411 function bezierCurveTo(self, cp1, cp2, p) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
412 self.currentPath_.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
413 type: 'bezierCurveTo',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
414 cp1x: cp1.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
415 cp1y: cp1.y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
416 cp2x: cp2.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
417 cp2y: cp2.y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
418 x: p.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
419 y: p.y
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
420 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
421 self.currentX_ = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
422 self.currentY_ = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
423 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
424
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
425 contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
426 // the following is lifted almost directly from
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
427 // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
428
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
429 var cp = this.getCoords_(aCPx, aCPy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
430 var p = this.getCoords_(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
431
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
432 var cp1 = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
433 x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
434 y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
435 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
436 var cp2 = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
437 x: cp1.x + (p.x - this.currentX_) / 3.0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
438 y: cp1.y + (p.y - this.currentY_) / 3.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
439 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
440
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
441 bezierCurveTo(this, cp1, cp2, p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
442 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
443
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
444 contextPrototype.arc = function(aX, aY, aRadius,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
445 aStartAngle, aEndAngle, aClockwise) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
446 aRadius *= Z;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
447 var arcType = aClockwise ? 'at' : 'wa';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
448
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
449 var xStart = aX + mc(aStartAngle) * aRadius - Z2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
450 var yStart = aY + ms(aStartAngle) * aRadius - Z2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
451
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
452 var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
453 var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
454
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
455 // IE won't render arches drawn counter clockwise if xStart == xEnd.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
456 if (xStart == xEnd && !aClockwise) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
457 xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
458 // that can be represented in binary
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
459 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
460
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
461 var p = this.getCoords_(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
462 var pStart = this.getCoords_(xStart, yStart);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
463 var pEnd = this.getCoords_(xEnd, yEnd);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
464
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
465 this.currentPath_.push({type: arcType,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
466 x: p.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
467 y: p.y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
468 radius: aRadius,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
469 xStart: pStart.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
470 yStart: pStart.y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
471 xEnd: pEnd.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
472 yEnd: pEnd.y});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
473
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
474 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
475
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
476 contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
477 this.moveTo(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
478 this.lineTo(aX + aWidth, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
479 this.lineTo(aX + aWidth, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
480 this.lineTo(aX, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
481 this.closePath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
482 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
483
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
484 contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
485 var oldPath = this.currentPath_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
486 this.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
487
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
488 this.moveTo(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
489 this.lineTo(aX + aWidth, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
490 this.lineTo(aX + aWidth, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
491 this.lineTo(aX, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
492 this.closePath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
493 this.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
494
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
495 this.currentPath_ = oldPath;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
496 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
497
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
498 contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
499 var oldPath = this.currentPath_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
500 this.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
501
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
502 this.moveTo(aX, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
503 this.lineTo(aX + aWidth, aY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
504 this.lineTo(aX + aWidth, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
505 this.lineTo(aX, aY + aHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
506 this.closePath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
507 this.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
508
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
509 this.currentPath_ = oldPath;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
510 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
511
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
512 contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
513 var gradient = new CanvasGradient_('gradient');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
514 gradient.x0_ = aX0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
515 gradient.y0_ = aY0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
516 gradient.x1_ = aX1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
517 gradient.y1_ = aY1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
518 return gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
519 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
520
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
521 contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
522 aX1, aY1, aR1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
523 var gradient = new CanvasGradient_('gradientradial');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
524 gradient.x0_ = aX0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
525 gradient.y0_ = aY0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
526 gradient.r0_ = aR0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
527 gradient.x1_ = aX1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
528 gradient.y1_ = aY1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
529 gradient.r1_ = aR1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
530 return gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
531 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
532
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
533 contextPrototype.drawImage = function(image, var_args) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
534 var dx, dy, dw, dh, sx, sy, sw, sh;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
535
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
536 // to find the original width we overide the width and height
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
537 var oldRuntimeWidth = image.runtimeStyle.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
538 var oldRuntimeHeight = image.runtimeStyle.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
539 image.runtimeStyle.width = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
540 image.runtimeStyle.height = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
541
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
542 // get the original size
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
543 var w = image.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
544 var h = image.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
545
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
546 // and remove overides
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
547 image.runtimeStyle.width = oldRuntimeWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
548 image.runtimeStyle.height = oldRuntimeHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
549
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
550 if (arguments.length == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
551 dx = arguments[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
552 dy = arguments[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
553 sx = sy = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
554 sw = dw = w;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
555 sh = dh = h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
556 } else if (arguments.length == 5) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
557 dx = arguments[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
558 dy = arguments[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
559 dw = arguments[3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
560 dh = arguments[4];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
561 sx = sy = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
562 sw = w;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
563 sh = h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
564 } else if (arguments.length == 9) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
565 sx = arguments[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
566 sy = arguments[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
567 sw = arguments[3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
568 sh = arguments[4];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
569 dx = arguments[5];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
570 dy = arguments[6];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
571 dw = arguments[7];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
572 dh = arguments[8];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
573 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
574 throw Error('Invalid number of arguments');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
575 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
576
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
577 var d = this.getCoords_(dx, dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
578
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
579 var w2 = sw / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
580 var h2 = sh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
581
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
582 var vmlStr = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
584 var W = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
585 var H = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
586
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
587 // For some reason that I've now forgotten, using divs didn't work
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
588 vmlStr.push(' <g_vml_:group',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
589 ' coordsize="', Z * W, ',', Z * H, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
590 ' coordorigin="0,0"' ,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
591 ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
592
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
593 // If filters are necessary (rotation exists), create them
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
594 // filters are bog-slow, so only create them if abbsolutely necessary
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
595 // The following check doesn't account for skews (which don't exist
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
596 // in the canvas spec (yet) anyway.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
597
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
598 if (this.m_[0][0] != 1 || this.m_[0][1]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
599 var filter = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
600
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
601 // Note the 12/21 reversal
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
602 filter.push('M11=', this.m_[0][0], ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
603 'M12=', this.m_[1][0], ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
604 'M21=', this.m_[0][1], ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
605 'M22=', this.m_[1][1], ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
606 'Dx=', mr(d.x / Z), ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
607 'Dy=', mr(d.y / Z), '');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
608
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
609 // Bounding box calculation (need to minimize displayed area so that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
610 // filters don't waste time on unused pixels.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
611 var max = d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
612 var c2 = this.getCoords_(dx + dw, dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
613 var c3 = this.getCoords_(dx, dy + dh);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
614 var c4 = this.getCoords_(dx + dw, dy + dh);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
615
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
616 max.x = m.max(max.x, c2.x, c3.x, c4.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
617 max.y = m.max(max.y, c2.y, c3.y, c4.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
618
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
619 vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
620 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
621 filter.join(''), ", sizingmethod='clip');")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
622 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
623 vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
624 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
626 vmlStr.push(' ">' ,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
627 '<g_vml_:image src="', image.src, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
628 ' style="width:', Z * dw, 'px;',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
629 ' height:', Z * dh, 'px;"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
630 ' cropleft="', sx / w, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
631 ' croptop="', sy / h, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
632 ' cropright="', (w - sx - sw) / w, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
633 ' cropbottom="', (h - sy - sh) / h, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
634 ' />',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
635 '</g_vml_:group>');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
636
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
637 this.element_.insertAdjacentHTML('BeforeEnd',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
638 vmlStr.join(''));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
639 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
640
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
641 contextPrototype.stroke = function(aFill) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
642 var lineStr = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
643 var lineOpen = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
644 var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
645 var color = a.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
646 var opacity = a.alpha * this.globalAlpha;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
647
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
648 var W = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
649 var H = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
651 lineStr.push('<g_vml_:shape',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
652 ' filled="', !!aFill, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
653 ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
654 ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
655 ' stroked="', !aFill, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
656 ' path="');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
658 var newSeq = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
659 var min = {x: null, y: null};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
660 var max = {x: null, y: null};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
661
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
662 for (var i = 0; i < this.currentPath_.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
663 var p = this.currentPath_[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
664 var c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
665
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
666 switch (p.type) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
667 case 'moveTo':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
668 c = p;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
669 lineStr.push(' m ', mr(p.x), ',', mr(p.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
670 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
671 case 'lineTo':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
672 lineStr.push(' l ', mr(p.x), ',', mr(p.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
673 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
674 case 'close':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
675 lineStr.push(' x ');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
676 p = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
677 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
678 case 'bezierCurveTo':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
679 lineStr.push(' c ',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
680 mr(p.cp1x), ',', mr(p.cp1y), ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
681 mr(p.cp2x), ',', mr(p.cp2y), ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
682 mr(p.x), ',', mr(p.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
683 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
684 case 'at':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
685 case 'wa':
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
686 lineStr.push(' ', p.type, ' ',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
687 mr(p.x - this.arcScaleX_ * p.radius), ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
688 mr(p.y - this.arcScaleY_ * p.radius), ' ',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
689 mr(p.x + this.arcScaleX_ * p.radius), ',',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
690 mr(p.y + this.arcScaleY_ * p.radius), ' ',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
691 mr(p.xStart), ',', mr(p.yStart), ' ',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
692 mr(p.xEnd), ',', mr(p.yEnd));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
693 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
694 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
695
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
696
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
697 // TODO: Following is broken for curves due to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
698 // move to proper paths.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
699
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
700 // Figure out dimensions so we can do gradient fills
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
701 // properly
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
702 if (p) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
703 if (min.x == null || p.x < min.x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
704 min.x = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
705 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
706 if (max.x == null || p.x > max.x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
707 max.x = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
708 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
709 if (min.y == null || p.y < min.y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
710 min.y = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
711 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
712 if (max.y == null || p.y > max.y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
713 max.y = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
714 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
715 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
716 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
717 lineStr.push(' ">');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
719 if (!aFill) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
720 var lineWidth = this.lineScale_ * this.lineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
721
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
722 // VML cannot correctly render a line if the width is less than 1px.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
723 // In that case, we dilute the color to make the line look thinner.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
724 if (lineWidth < 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
725 opacity *= lineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
726 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
728 lineStr.push(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
729 '<g_vml_:stroke',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
730 ' opacity="', opacity, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
731 ' joinstyle="', this.lineJoin, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
732 ' miterlimit="', this.miterLimit, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
733 ' endcap="', processLineCap(this.lineCap), '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
734 ' weight="', lineWidth, 'px"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
735 ' color="', color, '" />'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
736 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
737 } else if (typeof this.fillStyle == 'object') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
738 var fillStyle = this.fillStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
739 var angle = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
740 var focus = {x: 0, y: 0};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
742 // additional offset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
743 var shift = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
744 // scale factor for offset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
745 var expansion = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
746
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
747 if (fillStyle.type_ == 'gradient') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
748 var x0 = fillStyle.x0_ / this.arcScaleX_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
749 var y0 = fillStyle.y0_ / this.arcScaleY_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
750 var x1 = fillStyle.x1_ / this.arcScaleX_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
751 var y1 = fillStyle.y1_ / this.arcScaleY_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
752 var p0 = this.getCoords_(x0, y0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
753 var p1 = this.getCoords_(x1, y1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
754 var dx = p1.x - p0.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
755 var dy = p1.y - p0.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
756 angle = Math.atan2(dx, dy) * 180 / Math.PI;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
757
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
758 // The angle should be a non-negative number.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
759 if (angle < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
760 angle += 360;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
761 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
762
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
763 // Very small angles produce an unexpected result because they are
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
764 // converted to a scientific notation string.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
765 if (angle < 1e-6) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
766 angle = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
767 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
768 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
769 var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
770 var width = max.x - min.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
771 var height = max.y - min.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
772 focus = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
773 x: (p0.x - min.x) / width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
774 y: (p0.y - min.y) / height
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
775 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
777 width /= this.arcScaleX_ * Z;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
778 height /= this.arcScaleY_ * Z;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
779 var dimension = m.max(width, height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
780 shift = 2 * fillStyle.r0_ / dimension;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
781 expansion = 2 * fillStyle.r1_ / dimension - shift;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
782 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
783
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
784 // We need to sort the color stops in ascending order by offset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
785 // otherwise IE won't interpret it correctly.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
786 var stops = fillStyle.colors_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
787 stops.sort(function(cs1, cs2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
788 return cs1.offset - cs2.offset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
789 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
791 var length = stops.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
792 var color1 = stops[0].color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
793 var color2 = stops[length - 1].color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
794 var opacity1 = stops[0].alpha * this.globalAlpha;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
795 var opacity2 = stops[length - 1].alpha * this.globalAlpha;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
796
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
797 var colors = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
798 for (var i = 0; i < length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
799 var stop = stops[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
800 colors.push(stop.offset * expansion + shift + ' ' + stop.color);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
801 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
802
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
803 // When colors attribute is used, the meanings of opacity and o:opacity2
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
804 // are reversed.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
805 lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
806 ' method="none" focus="100%"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
807 ' color="', color1, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
808 ' color2="', color2, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
809 ' colors="', colors.join(','), '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
810 ' opacity="', opacity2, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
811 ' g_o_:opacity2="', opacity1, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
812 ' angle="', angle, '"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
813 ' focusposition="', focus.x, ',', focus.y, '" />');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
814 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
815 lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
816 '" />');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
817 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
818
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
819 lineStr.push('</g_vml_:shape>');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
820
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
821 this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
822 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
823
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
824 contextPrototype.fill = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
825 this.stroke(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
826 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
827
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
828 contextPrototype.closePath = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
829 this.currentPath_.push({type: 'close'});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
830 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
831
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
832 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
833 * @private
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
834 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
835 contextPrototype.getCoords_ = function(aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
836 var m = this.m_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
837 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
838 x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
839 y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
840 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
841 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
842
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
843 contextPrototype.save = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
844 var o = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
845 copyState(this, o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
846 this.aStack_.push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
847 this.mStack_.push(this.m_);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
848 this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
849 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
850
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
851 contextPrototype.restore = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
852 copyState(this.aStack_.pop(), this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
853 this.m_ = this.mStack_.pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
854 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
855
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
856 function matrixIsFinite(m) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
857 for (var j = 0; j < 3; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
858 for (var k = 0; k < 2; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
859 if (!isFinite(m[j][k]) || isNaN(m[j][k])) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
860 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
861 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
864 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
865 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
866
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
867 function setM(ctx, m, updateLineScale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
868 if (!matrixIsFinite(m)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
869 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
870 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
871 ctx.m_ = m;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
872
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
873 if (updateLineScale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
874 // Get the line scale.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
875 // Determinant of this.m_ means how much the area is enlarged by the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
876 // transformation. So its square root can be used as a scale factor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
877 // for width.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
878 var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
879 ctx.lineScale_ = sqrt(abs(det));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
880 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
881 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
883 contextPrototype.translate = function(aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
884 var m1 = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
885 [1, 0, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
886 [0, 1, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
887 [aX, aY, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
888 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
889
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
890 setM(this, matrixMultiply(m1, this.m_), false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
891 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
892
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
893 contextPrototype.rotate = function(aRot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
894 var c = mc(aRot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
895 var s = ms(aRot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
896
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
897 var m1 = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
898 [c, s, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
899 [-s, c, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
900 [0, 0, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
901 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
902
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
903 setM(this, matrixMultiply(m1, this.m_), false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
904 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
906 contextPrototype.scale = function(aX, aY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
907 this.arcScaleX_ *= aX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
908 this.arcScaleY_ *= aY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
909 var m1 = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
910 [aX, 0, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
911 [0, aY, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
912 [0, 0, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
913 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
915 setM(this, matrixMultiply(m1, this.m_), true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
916 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
917
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
918 contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
919 var m1 = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
920 [m11, m12, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
921 [m21, m22, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
922 [dx, dy, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
923 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
925 setM(this, matrixMultiply(m1, this.m_), true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
926 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
928 contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
929 var m = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
930 [m11, m12, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
931 [m21, m22, 0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
932 [dx, dy, 1]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
933 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
934
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
935 setM(this, m, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
936 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
937
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
938 /******** STUBS ********/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
939 contextPrototype.clip = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
940 // TODO: Implement
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
941 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
942
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
943 contextPrototype.arcTo = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
944 // TODO: Implement
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
945 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
946
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
947 contextPrototype.createPattern = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
948 return new CanvasPattern_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
949 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
950
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
951 // Gradient / Pattern Stubs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
952 function CanvasGradient_(aType) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
953 this.type_ = aType;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
954 this.x0_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
955 this.y0_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
956 this.r0_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
957 this.x1_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
958 this.y1_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
959 this.r1_ = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
960 this.colors_ = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
961 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
962
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
963 CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
964 aColor = processStyle(aColor);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
965 this.colors_.push({offset: aOffset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
966 color: aColor.color,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
967 alpha: aColor.alpha});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
968 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
969
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
970 function CanvasPattern_() {}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
971
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
972 // set up externs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
973 G_vmlCanvasManager = G_vmlCanvasManager_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
974 CanvasRenderingContext2D = CanvasRenderingContext2D_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
975 CanvasGradient = CanvasGradient_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
976 CanvasPattern = CanvasPattern_;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
977
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
978 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
979
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
980 } // if
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
981 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
982 * simile-ajax-basic.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
983 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
984 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
985 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
986 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
987 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
988 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
989 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
990 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
991 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
992 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
993 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
994 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
995 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
996 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
997 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
998 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
999 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1000 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1002 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1003 * basic code which is included in front of simile ajax code for the minified version
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1004 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1005 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1006 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1007 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1008 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1010 SimileAjax_urlPrefix = GeoTemCoMinifier_urlPrefix + 'lib/simile/ajax/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1011
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1012 if ( typeof window.SimileAjax == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1013 window.SimileAjax = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1014 loadingScriptsCount : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1015 error : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1016 params : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1017 bundle : "true"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1018 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1019 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1020
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1021 SimileAjax.Platform = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1022 SimileAjax.includeCssFile = function(doc, url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1023 var link = doc.createElement("link");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1024 link.setAttribute("rel", "stylesheet");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1025 link.setAttribute("type", "text/css");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1026 link.setAttribute("href", url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1027 doc.getElementsByTagName("head")[0].appendChild(link);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1028 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1029 SimileAjax.urlPrefix = SimileAjax_urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1030 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1031 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1032 * Platform Utility Functions and Constants
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1033 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1034 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1035
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1036 /* This must be called after our jQuery has been loaded
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1037 but before control returns to user-code.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1038 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1039
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1040
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1041 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1042 * REMEMBER to update the Version!
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1043 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1044 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1045 SimileAjax.version = '2.2.1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1046
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1047 SimileAjax.jQuery = jQuery.noConflict(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1048 if (typeof window["$"] == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1049 window.$ = SimileAjax.jQuery;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1050 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1052 SimileAjax.Platform.os = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1053 isMac: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1054 isWin: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1055 isWin32: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1056 isUnix: false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1057 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1058 SimileAjax.Platform.browser = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1059 isIE: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1060 isNetscape: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1061 isMozilla: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1062 isFirefox: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1063 isOpera: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1064 isSafari: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1065
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1066 majorVersion: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1067 minorVersion: 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1068 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1069
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1070 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1071 var an = navigator.appName.toLowerCase();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1072 var ua = navigator.userAgent.toLowerCase();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1073
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1074 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1075 * Operating system
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1076 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1077 SimileAjax.Platform.os.isMac = (ua.indexOf('mac') != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1078 SimileAjax.Platform.os.isWin = (ua.indexOf('win') != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1079 SimileAjax.Platform.os.isWin32 = SimileAjax.Platform.isWin && (
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1080 ua.indexOf('95') != -1 ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1081 ua.indexOf('98') != -1 ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1082 ua.indexOf('nt') != -1 ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1083 ua.indexOf('win32') != -1 ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1084 ua.indexOf('32bit') != -1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1085 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1086 SimileAjax.Platform.os.isUnix = (ua.indexOf('x11') != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1087
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1088 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1089 * Browser
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1090 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1091 SimileAjax.Platform.browser.isIE = (an.indexOf("microsoft") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1092 SimileAjax.Platform.browser.isNetscape = (an.indexOf("netscape") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1093 SimileAjax.Platform.browser.isMozilla = (ua.indexOf("mozilla") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1094 SimileAjax.Platform.browser.isFirefox = (ua.indexOf("firefox") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1095 SimileAjax.Platform.browser.isOpera = (an.indexOf("opera") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1096 SimileAjax.Platform.browser.isSafari = (an.indexOf("safari") != -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1097
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1098 var parseVersionString = function(s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1099 var a = s.split(".");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1100 SimileAjax.Platform.browser.majorVersion = parseInt(a[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1101 SimileAjax.Platform.browser.minorVersion = parseInt(a[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1102 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1103 var indexOf = function(s, sub, start) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1104 var i = s.indexOf(sub, start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1105 return i >= 0 ? i : s.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1106 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1107
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1108 if (SimileAjax.Platform.browser.isMozilla) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1109 var offset = ua.indexOf("mozilla/");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1110 if (offset >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1111 parseVersionString(ua.substring(offset + 8, indexOf(ua, " ", offset)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1112 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1113 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1114 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1115 var offset = ua.indexOf("msie ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1116 if (offset >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1117 parseVersionString(ua.substring(offset + 5, indexOf(ua, ";", offset)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1118 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1120 if (SimileAjax.Platform.browser.isNetscape) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1121 var offset = ua.indexOf("rv:");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1122 if (offset >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1123 parseVersionString(ua.substring(offset + 3, indexOf(ua, ")", offset)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1124 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1125 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1126 if (SimileAjax.Platform.browser.isFirefox) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1127 var offset = ua.indexOf("firefox/");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1128 if (offset >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1129 parseVersionString(ua.substring(offset + 8, indexOf(ua, " ", offset)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1130 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1131 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1133 if (!("localeCompare" in String.prototype)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1134 String.prototype.localeCompare = function (s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1135 if (this < s) return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1136 else if (this > s) return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1137 else return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1138 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1139 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1140 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1141
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1142 SimileAjax.Platform.getDefaultLocale = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1143 return SimileAjax.Platform.clientLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1144 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1145 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1146 * Debug Utility Functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1147 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1148 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1149
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1150 SimileAjax.Debug = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1151 silent: false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1152 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1153
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1154 SimileAjax.Debug.log = function(msg) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1155 var f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1156 if ("console" in window && "log" in window.console) { // FireBug installed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1157 f = function(msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1158 console.log(msg2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1159 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1160 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1161 f = function(msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1162 if (!SimileAjax.Debug.silent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1163 alert(msg2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1164 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1165 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1166 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1167 SimileAjax.Debug.log = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1168 f(msg);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1169 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1170
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1171 SimileAjax.Debug.warn = function(msg) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1172 var f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1173 if ("console" in window && "warn" in window.console) { // FireBug installed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1174 f = function(msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1175 console.warn(msg2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1176 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1177 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1178 f = function(msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1179 if (!SimileAjax.Debug.silent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1180 alert(msg2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1182 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1184 SimileAjax.Debug.warn = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1185 f(msg);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1186 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1187
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1188 SimileAjax.Debug.exception = function(e, msg) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1189 var f, params = SimileAjax.parseURLParameters();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1190 if (params.errors == "throw" || SimileAjax.params.errors == "throw") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1191 f = function(e2, msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1192 throw(e2); // do not hide from browser's native debugging features
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1193 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1194 } else if ("console" in window && "error" in window.console) { // FireBug installed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1195 f = function(e2, msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1196 if (msg2 != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1197 console.error(msg2 + " %o", e2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1198 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1199 console.error(e2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1200 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1201 throw(e2); // do not hide from browser's native debugging features
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1202 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1203 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1204 f = function(e2, msg2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1205 if (!SimileAjax.Debug.silent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1206 alert("Caught exception: " + msg2 + "\n\nDetails: " + ("description" in e2 ? e2.description : e2));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1207 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1208 throw(e2); // do not hide from browser's native debugging features
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1209 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1210 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1211 SimileAjax.Debug.exception = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1212 f(e, msg);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1213 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1214
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1215 SimileAjax.Debug.objectToString = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1216 return SimileAjax.Debug._objectToString(o, "");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1217 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1218
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1219 SimileAjax.Debug._objectToString = function(o, indent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1220 var indent2 = indent + " ";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1221 if (typeof o == "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1222 var s = "{";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1223 for (n in o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1224 s += indent2 + n + ": " + SimileAjax.Debug._objectToString(o[n], indent2) + "\n";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1225 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1226 s += indent + "}";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1227 return s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1228 } else if (typeof o == "array") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1229 var s = "[";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1230 for (var n = 0; n < o.length; n++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1231 s += SimileAjax.Debug._objectToString(o[n], indent2) + "\n";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1232 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1233 s += indent + "]";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1234 return s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1235 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1236 return o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1237 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1238 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1239 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1240 * @fileOverview XmlHttp utility functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1241 * @name SimileAjax.XmlHttp
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1242 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1244 SimileAjax.XmlHttp = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1246 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1247 * Callback for XMLHttp onRequestStateChange.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1248 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1249 SimileAjax.XmlHttp._onReadyStateChange = function(xmlhttp, fError, fDone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1250 switch (xmlhttp.readyState) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1251 // 1: Request not yet made
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1252 // 2: Contact established with server but nothing downloaded yet
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1253 // 3: Called multiple while downloading in progress
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1254
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1255 // Download complete
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1256 case 4:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1257 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1258 if (xmlhttp.status == 0 // file:// urls, works on Firefox
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1259 || xmlhttp.status == 200 // http:// urls
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1260 ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1261 if (fDone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1262 fDone(xmlhttp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1263 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1264 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1265 if (fError) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1266 fError(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1267 xmlhttp.statusText,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1268 xmlhttp.status,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1269 xmlhttp
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1270 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1271 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1272 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1273 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1274 SimileAjax.Debug.exception("XmlHttp: Error handling onReadyStateChange", e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1275 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1276 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1277 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1278 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1279
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1280 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1281 * Creates an XMLHttpRequest object. On the first run, this
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1282 * function creates a platform-specific function for
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1283 * instantiating an XMLHttpRequest object and then replaces
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1284 * itself with that function.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1285 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1286 SimileAjax.XmlHttp._createRequest = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1287 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1288 var programIDs = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1289 "Msxml2.XMLHTTP",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1290 "Microsoft.XMLHTTP",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1291 "Msxml2.XMLHTTP.4.0"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1292 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1293 for (var i = 0; i < programIDs.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1294 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1295 var programID = programIDs[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1296 var f = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1297 return new ActiveXObject(programID);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1298 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1299 var o = f();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1300
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1301 // We are replacing the SimileAjax._createXmlHttpRequest
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1302 // function with this inner function as we've
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1303 // found out that it works. This is so that we
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1304 // don't have to do all the testing over again
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1305 // on subsequent calls.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1306 SimileAjax.XmlHttp._createRequest = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1307
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1308 return o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1309 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1310 // silent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1312 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1313 // fall through to try new XMLHttpRequest();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1314 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1316 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1317 var f = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1318 return new XMLHttpRequest();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1319 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1320 var o = f();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1321
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1322 // We are replacing the SimileAjax._createXmlHttpRequest
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1323 // function with this inner function as we've
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1324 // found out that it works. This is so that we
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1325 // don't have to do all the testing over again
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1326 // on subsequent calls.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1327 SimileAjax.XmlHttp._createRequest = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1328
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1329 return o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1330 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1331 throw new Error("Failed to create an XMLHttpRequest object");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1332 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1333 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1335 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1336 * Performs an asynchronous HTTP GET.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1337 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1338 * @param {Function} fError a function of the form
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1339 function(statusText, statusCode, xmlhttp)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1340 * @param {Function} fDone a function of the form function(xmlhttp)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1341 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1342 SimileAjax.XmlHttp.get = function(url, fError, fDone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1343 var xmlhttp = SimileAjax.XmlHttp._createRequest();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1344
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1345 xmlhttp.open("GET", url, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1346 xmlhttp.onreadystatechange = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1347 SimileAjax.XmlHttp._onReadyStateChange(xmlhttp, fError, fDone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1348 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1349 xmlhttp.send(null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1350 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1351
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1352 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1353 * Performs an asynchronous HTTP POST.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1354 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1355 * @param {Function} fError a function of the form
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1356 function(statusText, statusCode, xmlhttp)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1357 * @param {Function} fDone a function of the form function(xmlhttp)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1358 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1359 SimileAjax.XmlHttp.post = function(url, body, fError, fDone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1360 var xmlhttp = SimileAjax.XmlHttp._createRequest();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1361
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1362 xmlhttp.open("POST", url, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1363 xmlhttp.onreadystatechange = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1364 SimileAjax.XmlHttp._onReadyStateChange(xmlhttp, fError, fDone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1365 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1366 xmlhttp.send(body);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1367 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1369 SimileAjax.XmlHttp._forceXML = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1370 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1371 xmlhttp.overrideMimeType("text/xml");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1372 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1373 xmlhttp.setrequestheader("Content-Type", "text/xml");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1374 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1375 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1376 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1377 * Copied directly from http://www.json.org/json.js.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1378 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1379
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1380 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1381 json.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1382 2006-04-28
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1383
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1384 This file adds these methods to JavaScript:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1386 object.toJSONString()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1387
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1388 This method produces a JSON text from an object. The
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1389 object must not contain any cyclical references.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1390
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1391 array.toJSONString()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1392
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1393 This method produces a JSON text from an array. The
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1394 array must not contain any cyclical references.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1395
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1396 string.parseJSON()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1397
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1398 This method parses a JSON text to produce an object or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1399 array. It will return false if there is an error.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1400 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1401
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1402 SimileAjax.JSON = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1403
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1404 (function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1405 var m = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1406 '\b': '\\b',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1407 '\t': '\\t',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1408 '\n': '\\n',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1409 '\f': '\\f',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1410 '\r': '\\r',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1411 '"' : '\\"',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1412 '\\': '\\\\'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1413 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1414 var s = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1415 array: function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1416 var a = ['['], b, f, i, l = x.length, v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1417 for (i = 0; i < l; i += 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1418 v = x[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1419 f = s[typeof v];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1420 if (f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1421 v = f(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1422 if (typeof v == 'string') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1423 if (b) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1424 a[a.length] = ',';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1425 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1426 a[a.length] = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1427 b = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1429 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1430 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1431 a[a.length] = ']';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1432 return a.join('');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1433 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1434 'boolean': function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1435 return String(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1436 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1437 'null': function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1438 return "null";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1439 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1440 number: function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1441 return isFinite(x) ? String(x) : 'null';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1442 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1443 object: function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1444 if (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1445 if (x instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1446 return s.array(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1447 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1448 var a = ['{'], b, f, i, v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1449 for (i in x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1450 v = x[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1451 f = s[typeof v];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1452 if (f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1453 v = f(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1454 if (typeof v == 'string') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1455 if (b) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1456 a[a.length] = ',';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1458 a.push(s.string(i), ':', v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1459 b = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1460 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1461 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1462 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1463 a[a.length] = '}';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1464 return a.join('');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1465 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1466 return 'null';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1467 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1468 string: function (x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1469 if (/["\\\x00-\x1f]/.test(x)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1470 x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1471 var c = m[b];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1472 if (c) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1473 return c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1474 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1475 c = b.charCodeAt();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1476 return '\\u00' +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1477 Math.floor(c / 16).toString(16) +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1478 (c % 16).toString(16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1479 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1480 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1481 return '"' + x + '"';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1482 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1483 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1484
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1485 SimileAjax.JSON.toJSONString = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1486 if (o instanceof Object) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1487 return s.object(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1488 } else if (o instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1489 return s.array(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1490 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1491 return o.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1492 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1493 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1494
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1495 SimileAjax.JSON.parseJSON = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1496 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1497 return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1498 this.replace(/"(\\.|[^"\\])*"/g, ''))) &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1499 eval('(' + this + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1500 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1501 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1502 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1503 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1504 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1505 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1506 * DOM Utility Functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1507 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1508 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1509
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1510 SimileAjax.DOM = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1511
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1512 SimileAjax.DOM.registerEventWithObject = function(elmt, eventName, obj, handlerName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1513 SimileAjax.DOM.registerEvent(elmt, eventName, function(elmt2, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1514 return obj[handlerName].call(obj, elmt2, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1515 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1516 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1517
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1518 SimileAjax.DOM.registerEvent = function(elmt, eventName, handler) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1519 var handler2 = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1520 evt = (evt) ? evt : ((event) ? event : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1521 if (evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1522 var target = (evt.target) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1523 evt.target : ((evt.srcElement) ? evt.srcElement : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1524 if (target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1525 target = (target.nodeType == 1 || target.nodeType == 9) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1526 target : target.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1527 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1528
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1529 return handler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1530 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1531 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1532 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1533
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1534 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1535 elmt.attachEvent("on" + eventName, handler2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1536 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1537 elmt.addEventListener(eventName, handler2, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1538 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1539 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1540
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1541 SimileAjax.DOM.getPageCoordinates = function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1542 var left = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1543 var top = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1544
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1545 if (elmt.nodeType != 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1546 elmt = elmt.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1547 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1548
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1549 var elmt2 = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1550 while (elmt2 != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1551 left += elmt2.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1552 top += elmt2.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1553 elmt2 = elmt2.offsetParent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1554 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1555
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1556 var body = document.body;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1557 while (elmt != null && elmt != body) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1558 if ("scrollLeft" in elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1559 left -= elmt.scrollLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1560 top -= elmt.scrollTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1561 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1562 elmt = elmt.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1563 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1564
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1565 return { left: left, top: top };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1566 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1567
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1568 SimileAjax.DOM.getSize = function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1569 var w = this.getStyle(elmt,"width");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1570 var h = this.getStyle(elmt,"height");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1571 if (w.indexOf("px") > -1) w = w.replace("px","");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1572 if (h.indexOf("px") > -1) h = h.replace("px","");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1573 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1574 w: w,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1575 h: h
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1576 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1577 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1578
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1579 SimileAjax.DOM.getStyle = function(elmt, styleProp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1580 if (elmt.currentStyle) { // IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1581 var style = elmt.currentStyle[styleProp];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1582 } else if (window.getComputedStyle) { // standard DOM
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1583 var style = document.defaultView.getComputedStyle(elmt, null).getPropertyValue(styleProp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1584 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1585 var style = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1586 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1587 return style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1588 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1590 SimileAjax.DOM.getEventRelativeCoordinates = function(evt, elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1591 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1592 if (evt.type == "mousewheel") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1593 var coords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1594 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1595 x: evt.clientX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1596 y: evt.clientY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1597 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1598 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1599 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1600 x: evt.offsetX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1601 y: evt.offsetY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1602 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1603 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1604 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1605 var coords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1606
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1607 if ((evt.type == "DOMMouseScroll") &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1608 SimileAjax.Platform.browser.isFirefox &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1609 (SimileAjax.Platform.browser.majorVersion == 2)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1610 // Due to: https://bugzilla.mozilla.org/show_bug.cgi?id=352179
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1611
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1612 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1613 x: evt.screenX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1614 y: evt.screenY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1615 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1616 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1617 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1618 x: evt.pageX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1619 y: evt.pageY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1620 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1621 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1622 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1623 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1624
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1625 SimileAjax.DOM.getEventPageCoordinates = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1626 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1627 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1628 x: evt.clientX + document.body.scrollLeft,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1629 y: evt.clientY + document.body.scrollTop
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1630 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1631 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1632 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1633 x: evt.pageX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1634 y: evt.pageY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1635 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1636 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1637 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1638
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1639 SimileAjax.DOM.hittest = function(x, y, except) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1640 return SimileAjax.DOM._hittest(document.body, x, y, except);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1641 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1642
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1643 SimileAjax.DOM._hittest = function(elmt, x, y, except) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1644 var childNodes = elmt.childNodes;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1645 outer: for (var i = 0; i < childNodes.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1646 var childNode = childNodes[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1647 for (var j = 0; j < except.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1648 if (childNode == except[j]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1649 continue outer;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1650 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1651 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1652
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1653 if (childNode.offsetWidth == 0 && childNode.offsetHeight == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1654 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1655 * Sometimes SPAN elements have zero width and height but
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1656 * they have children like DIVs that cover non-zero areas.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1657 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1658 var hitNode = SimileAjax.DOM._hittest(childNode, x, y, except);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1659 if (hitNode != childNode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1660 return hitNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1661 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1662 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1663 var top = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1664 var left = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1665
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1666 var node = childNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1667 while (node) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1668 top += node.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1669 left += node.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1670 node = node.offsetParent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1672
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1673 if (left <= x && top <= y && (x - left) < childNode.offsetWidth && (y - top) < childNode.offsetHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1674 return SimileAjax.DOM._hittest(childNode, x, y, except);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1675 } else if (childNode.nodeType == 1 && childNode.tagName == "TR") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1676 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1677 * Table row might have cells that span several rows.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1678 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1679 var childNode2 = SimileAjax.DOM._hittest(childNode, x, y, except);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1680 if (childNode2 != childNode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1681 return childNode2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1682 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1683 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1686 return elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1687 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1688
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1689 SimileAjax.DOM.cancelEvent = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1690 evt.returnValue = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1691 evt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1692 if ("preventDefault" in evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1693 evt.preventDefault();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1694 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1695 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1696
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1697 SimileAjax.DOM.appendClassName = function(elmt, className) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1698 var classes = elmt.className.split(" ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1699 for (var i = 0; i < classes.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1700 if (classes[i] == className) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1701 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1702 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1703 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1704 classes.push(className);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1705 elmt.className = classes.join(" ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1706 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1707
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1708 SimileAjax.DOM.createInputElement = function(type) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1709 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1710 div.innerHTML = "<input type='" + type + "' />";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1711
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1712 return div.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1713 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1714
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1715 SimileAjax.DOM.createDOMFromTemplate = function(template) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1716 var result = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1717 result.elmt = SimileAjax.DOM._createDOMFromTemplate(template, result, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1719 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1720 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1721
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1722 SimileAjax.DOM._createDOMFromTemplate = function(templateNode, result, parentElmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1723 if (templateNode == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1724 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1725 var node = doc.createTextNode("--null--");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1726 if (parentElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1727 parentElmt.appendChild(node);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1728 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1729 return node;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1730 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1731 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1732 } else if (typeof templateNode != "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1733 var node = document.createTextNode(templateNode);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1734 if (parentElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1735 parentElmt.appendChild(node);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1736 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1737 return node;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1738 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1739 var elmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1740 if ("tag" in templateNode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1741 var tag = templateNode.tag;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1742 if (parentElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1743 if (tag == "tr") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1744 elmt = parentElmt.insertRow(parentElmt.rows.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1745 } else if (tag == "td") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1746 elmt = parentElmt.insertCell(parentElmt.cells.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1747 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1748 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1749 if (elmt == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1750 elmt = tag == "input" ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1751 SimileAjax.DOM.createInputElement(templateNode.type) :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1752 document.createElement(tag);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1753
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1754 if (parentElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1755 parentElmt.appendChild(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1756 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1758 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1759 elmt = templateNode.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1760 if (parentElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1761 parentElmt.appendChild(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1762 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1763 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1764
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1765 for (var attribute in templateNode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1766 var value = templateNode[attribute];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1767
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1768 if (attribute == "field") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1769 result[value] = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1770
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1771 } else if (attribute == "className") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1772 elmt.className = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1773 } else if (attribute == "id") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1774 elmt.id = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1775 } else if (attribute == "title") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1776 elmt.title = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1777 } else if (attribute == "type" && elmt.tagName == "input") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1778 // do nothing
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1779 } else if (attribute == "style") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1780 for (n in value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1781 var v = value[n];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1782 if (n == "float") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1783 n = SimileAjax.Platform.browser.isIE ? "styleFloat" : "cssFloat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1784 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1785 elmt.style[n] = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1786 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1787 } else if (attribute == "children") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1788 for (var i = 0; i < value.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1789 SimileAjax.DOM._createDOMFromTemplate(value[i], result, elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1790 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1791 } else if (attribute != "tag" && attribute != "elmt") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1792 elmt.setAttribute(attribute, value);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1793 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1794 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1795 return elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1796 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1797 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1798
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1799 SimileAjax.DOM._cachedParent = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1800 SimileAjax.DOM.createElementFromString = function(s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1801 if (SimileAjax.DOM._cachedParent == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1802 SimileAjax.DOM._cachedParent = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1803 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1804 SimileAjax.DOM._cachedParent.innerHTML = s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1805 return SimileAjax.DOM._cachedParent.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1806 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1807
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1808 SimileAjax.DOM.createDOMFromString = function(root, s, fieldElmts) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1809 var elmt = typeof root == "string" ? document.createElement(root) : root;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1810 elmt.innerHTML = s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1811
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1812 var dom = { elmt: elmt };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1813 SimileAjax.DOM._processDOMChildrenConstructedFromString(dom, elmt, fieldElmts != null ? fieldElmts : {} );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1814
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1815 return dom;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1816 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1817
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1818 SimileAjax.DOM._processDOMConstructedFromString = function(dom, elmt, fieldElmts) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1819 var id = elmt.id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1820 if (id != null && id.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1821 elmt.removeAttribute("id");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1822 if (id in fieldElmts) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1823 var parentElmt = elmt.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1824 parentElmt.insertBefore(fieldElmts[id], elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1825 parentElmt.removeChild(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1827 dom[id] = fieldElmts[id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1828 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1829 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1830 dom[id] = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1831 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1832 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1833
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1834 if (elmt.hasChildNodes()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1835 SimileAjax.DOM._processDOMChildrenConstructedFromString(dom, elmt, fieldElmts);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1836 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1837 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1838
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1839 SimileAjax.DOM._processDOMChildrenConstructedFromString = function(dom, elmt, fieldElmts) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1840 var node = elmt.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1841 while (node != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1842 var node2 = node.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1843 if (node.nodeType == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1844 SimileAjax.DOM._processDOMConstructedFromString(dom, node, fieldElmts);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1846 node = node2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1847 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1848 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1849 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1850 * @fileOverview Graphics utility functions and constants
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1851 * @name SimileAjax.Graphics
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1852 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1853
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1854 SimileAjax.Graphics = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1855
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1856 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1857 * A boolean value indicating whether PNG translucency is supported on the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1858 * user's browser or not.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1859 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1860 * @type Boolean
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1861 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1862 SimileAjax.Graphics.pngIsTranslucent = (!SimileAjax.Platform.browser.isIE) || (SimileAjax.Platform.browser.majorVersion > 6);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1863 if (!SimileAjax.Graphics.pngIsTranslucent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1864 SimileAjax.includeCssFile(document, SimileAjax.urlPrefix + "styles/graphics-ie6.css");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1865 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1866
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1867 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1868 * Opacity, translucency
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1869 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1870 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1871 SimileAjax.Graphics._createTranslucentImage1 = function(url, verticalAlign) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1872 var elmt = document.createElement("img");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1873 elmt.setAttribute("src", url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1874 if (verticalAlign != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1875 elmt.style.verticalAlign = verticalAlign;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1876 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1877 return elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1878 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1879 SimileAjax.Graphics._createTranslucentImage2 = function(url, verticalAlign) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1880 var elmt = document.createElement("img");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1881 elmt.style.width = "1px"; // just so that IE will calculate the size property
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1882 elmt.style.height = "1px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1883 elmt.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url +"', sizingMethod='image')";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1884 elmt.style.verticalAlign = (verticalAlign != null) ? verticalAlign : "middle";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1885 return elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1886 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1887
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1888 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1889 * Creates a DOM element for an <code>img</code> tag using the URL given. This
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1890 * is a convenience method that automatically includes the necessary CSS to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1891 * allow for translucency, even on IE.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1892 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1893 * @function
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1894 * @param {String} url the URL to the image
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1895 * @param {String} verticalAlign the CSS value for the image's vertical-align
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1896 * @return {Element} a DOM element containing the <code>img</code> tag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1897 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1898 SimileAjax.Graphics.createTranslucentImage = SimileAjax.Graphics.pngIsTranslucent ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1899 SimileAjax.Graphics._createTranslucentImage1 :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1900 SimileAjax.Graphics._createTranslucentImage2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1901
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1902 SimileAjax.Graphics._createTranslucentImageHTML1 = function(url, verticalAlign) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1903 return "<img src=\"" + url + "\"" +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1904 (verticalAlign != null ? " style=\"vertical-align: " + verticalAlign + ";\"" : "") +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1905 " />";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1906 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1907 SimileAjax.Graphics._createTranslucentImageHTML2 = function(url, verticalAlign) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1908 var style =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1909 "width: 1px; height: 1px; " +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1910 "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url +"', sizingMethod='image');" +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1911 (verticalAlign != null ? " vertical-align: " + verticalAlign + ";" : "");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1912
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1913 return "<img src='" + url + "' style=\"" + style + "\" />";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1914 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1916 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1917 * Creates an HTML string for an <code>img</code> tag using the URL given.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1918 * This is a convenience method that automatically includes the necessary CSS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1919 * to allow for translucency, even on IE.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1920 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1921 * @function
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1922 * @param {String} url the URL to the image
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1923 * @param {String} verticalAlign the CSS value for the image's vertical-align
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1924 * @return {String} a string containing the <code>img</code> tag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1925 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1926 SimileAjax.Graphics.createTranslucentImageHTML = SimileAjax.Graphics.pngIsTranslucent ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1927 SimileAjax.Graphics._createTranslucentImageHTML1 :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1928 SimileAjax.Graphics._createTranslucentImageHTML2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1929
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1930 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1931 * Sets the opacity on the given DOM element.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1932 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1933 * @param {Element} elmt the DOM element to set the opacity on
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1934 * @param {Number} opacity an integer from 0 to 100 specifying the opacity
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1935 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1936 SimileAjax.Graphics.setOpacity = function(elmt, opacity) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1937 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1938 elmt.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Style=0,Opacity=" + opacity + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1939 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1940 var o = (opacity / 100).toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1941 elmt.style.opacity = o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1942 elmt.style.MozOpacity = o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1943 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1944 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1946 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1947 * Bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1948 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1949 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1950
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1951 SimileAjax.Graphics.bubbleConfig = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1952 containerCSSClass: "simileAjax-bubble-container",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1953 innerContainerCSSClass: "simileAjax-bubble-innerContainer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1954 contentContainerCSSClass: "simileAjax-bubble-contentContainer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1955
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1956 borderGraphicSize: 50,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1957 borderGraphicCSSClassPrefix: "simileAjax-bubble-border-",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1958
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1959 arrowGraphicTargetOffset: 33, // from tip of arrow to the side of the graphic that touches the content of the bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1960 arrowGraphicLength: 100, // dimension of arrow graphic along the direction that the arrow points
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1961 arrowGraphicWidth: 49, // dimension of arrow graphic perpendicular to the direction that the arrow points
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1962 arrowGraphicCSSClassPrefix: "simileAjax-bubble-arrow-",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1963
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1964 closeGraphicCSSClass: "simileAjax-bubble-close",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1965
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1966 extraPadding: 20
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1967 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1968
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1969 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1970 * Creates a nice, rounded bubble popup with the given content in a div,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1971 * page coordinates and a suggested width. The bubble will point to the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1972 * location on the page as described by pageX and pageY. All measurements
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1973 * should be given in pixels.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1974 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1975 * @param {Element} the content div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1976 * @param {Number} pageX the x coordinate of the point to point to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1977 * @param {Number} pageY the y coordinate of the point to point to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1978 * @param {Number} contentWidth a suggested width of the content
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1979 * @param {String} orientation a string ("top", "bottom", "left", or "right")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1980 * that describes the orientation of the arrow on the bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1981 * @param {Number} maxHeight. Add a scrollbar div if bubble would be too tall.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1982 * Default of 0 or null means no maximum
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1983 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1984 SimileAjax.Graphics.createBubbleForContentAndPoint = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1985 div, pageX, pageY, contentWidth, orientation, maxHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1986 if (typeof contentWidth != "number") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1987 contentWidth = 300;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1988 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1989 if (typeof maxHeight != "number") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1990 maxHeight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1991 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1992
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1993 div.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1994 div.style.left = "-5000px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1995 div.style.top = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1996 div.style.width = contentWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1997 document.body.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1998
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
1999 window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2000 var width = div.scrollWidth + 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2001 var height = div.scrollHeight + 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2002 var scrollDivW = 0; // width of the possible inner container when we want vertical scrolling
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2003 if (maxHeight > 0 && height > maxHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2004 height = maxHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2005 scrollDivW = width - 25;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2006 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2007
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2008 var bubble = SimileAjax.Graphics.createBubbleForPoint(pageX, pageY, width, height, orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2010 document.body.removeChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2011 div.style.position = "static";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2012 div.style.left = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2013 div.style.top = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2014
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2015 // create a scroll div if needed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2016 if (scrollDivW > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2017 var scrollDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2018 div.style.width = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2019 scrollDiv.style.width = scrollDivW + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2020 scrollDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2021 bubble.content.appendChild(scrollDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2022 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2023 div.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2024 bubble.content.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2025 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2026 }, 200);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2027 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2028
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2029 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2030 * Creates a nice, rounded bubble popup with the given page coordinates and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2031 * content dimensions. The bubble will point to the location on the page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2032 * as described by pageX and pageY. All measurements should be given in
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2033 * pixels.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2034 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2035 * @param {Number} pageX the x coordinate of the point to point to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2036 * @param {Number} pageY the y coordinate of the point to point to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2037 * @param {Number} contentWidth the width of the content box in the bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2038 * @param {Number} contentHeight the height of the content box in the bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2039 * @param {String} orientation a string ("top", "bottom", "left", or "right")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2040 * that describes the orientation of the arrow on the bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2041 * @return {Element} a DOM element for the newly created bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2042 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2043 SimileAjax.Graphics.createBubbleForPoint = function(pageX, pageY, contentWidth, contentHeight, orientation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2044 contentWidth = parseInt(contentWidth, 10); // harden against bad input bugs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2045 contentHeight = parseInt(contentHeight, 10); // getting numbers-as-strings
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2046
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2047 var bubbleConfig = SimileAjax.Graphics.bubbleConfig;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2048 var pngTransparencyClassSuffix =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2049 SimileAjax.Graphics.pngIsTranslucent ? "pngTranslucent" : "pngNotTranslucent";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2050
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2051 var bubbleWidth = contentWidth + 2 * bubbleConfig.borderGraphicSize;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2052 var bubbleHeight = contentHeight + 2 * bubbleConfig.borderGraphicSize;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2053
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2054 var generatePngSensitiveClass = function(className) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2055 return className + " " + className + "-" + pngTransparencyClassSuffix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2056 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2057
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2058 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2059 * Render container divs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2060 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2061 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2062 div.className = generatePngSensitiveClass(bubbleConfig.containerCSSClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2063 div.style.width = contentWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2064 div.style.height = contentHeight + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2065
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2066 var divInnerContainer = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2067 divInnerContainer.className = generatePngSensitiveClass(bubbleConfig.innerContainerCSSClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2068 div.appendChild(divInnerContainer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2069
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2070 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2071 * Create layer for bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2072 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2073 var close = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2074 if (!bubble._closed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2075 document.body.removeChild(bubble._div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2076 bubble._doc = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2077 bubble._div = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2078 bubble._content = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2079 bubble._closed = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2080 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2081 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2082 var bubble = { _closed: false };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2083 var layer = SimileAjax.WindowManager.pushLayer(close, true, div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2084 bubble._div = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2085 bubble.close = function() { SimileAjax.WindowManager.popLayer(layer); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2086
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2087 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2088 * Render border graphics
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2089 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2090 var createBorder = function(classNameSuffix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2091 var divBorderGraphic = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2092 divBorderGraphic.className = generatePngSensitiveClass(bubbleConfig.borderGraphicCSSClassPrefix + classNameSuffix);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2093 divInnerContainer.appendChild(divBorderGraphic);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2094 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2095 createBorder("top-left");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2096 createBorder("top-right");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2097 createBorder("bottom-left");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2098 createBorder("bottom-right");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2099 createBorder("left");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2100 createBorder("right");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2101 createBorder("top");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2102 createBorder("bottom");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2103
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2104 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2105 * Render content
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2106 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2107 var divContentContainer = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2108 divContentContainer.className = generatePngSensitiveClass(bubbleConfig.contentContainerCSSClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2109 divInnerContainer.appendChild(divContentContainer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2110 bubble.content = divContentContainer;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2112 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2113 * Render close button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2114 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2115 var divClose = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2116 divClose.className = generatePngSensitiveClass(bubbleConfig.closeGraphicCSSClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2117 divInnerContainer.appendChild(divClose);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2118 SimileAjax.WindowManager.registerEventWithObject(divClose, "click", bubble, "close");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2119
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2120 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2121 var dims = SimileAjax.Graphics.getWindowDimensions();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2122 var docWidth = dims.w;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2123 var docHeight = dims.h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2124
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2125 var halfArrowGraphicWidth = Math.ceil(bubbleConfig.arrowGraphicWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2126
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2127 var createArrow = function(classNameSuffix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2128 var divArrowGraphic = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2129 divArrowGraphic.className = generatePngSensitiveClass(bubbleConfig.arrowGraphicCSSClassPrefix + "point-" + classNameSuffix);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2130 divInnerContainer.appendChild(divArrowGraphic);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2131 return divArrowGraphic;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2132 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2133
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2134 if (pageX - halfArrowGraphicWidth - bubbleConfig.borderGraphicSize - bubbleConfig.extraPadding > 0 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2135 pageX + halfArrowGraphicWidth + bubbleConfig.borderGraphicSize + bubbleConfig.extraPadding < docWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2136
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2137 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2138 * Bubble can be positioned above or below the target point.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2139 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2141 var left = pageX - Math.round(contentWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2142 left = pageX < (docWidth / 2) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2143 Math.max(left, bubbleConfig.extraPadding + bubbleConfig.borderGraphicSize) :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2144 Math.min(left, docWidth - bubbleConfig.extraPadding - bubbleConfig.borderGraphicSize - contentWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2145
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2146 if ((orientation && orientation == "top") ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2147 (!orientation &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2148 (pageY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2149 - bubbleConfig.arrowGraphicTargetOffset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2150 - contentHeight
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2151 - bubbleConfig.borderGraphicSize
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2152 - bubbleConfig.extraPadding > 0))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2153
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2154 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2155 * Position bubble above the target point.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2156 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2157
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2158 var divArrow = createArrow("down");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2159 divArrow.style.left = (pageX - halfArrowGraphicWidth - left) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2160
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2161 div.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2162 div.style.top = (pageY - bubbleConfig.arrowGraphicTargetOffset - contentHeight) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2163
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2164 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2165 } else if ((orientation && orientation == "bottom") ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2166 (!orientation &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2167 (pageY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2168 + bubbleConfig.arrowGraphicTargetOffset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2169 + contentHeight
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2170 + bubbleConfig.borderGraphicSize
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2171 + bubbleConfig.extraPadding < docHeight))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2172
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2173 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2174 * Position bubble below the target point.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2175 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2176
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2177 var divArrow = createArrow("up");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2178 divArrow.style.left = (pageX - halfArrowGraphicWidth - left) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2179
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2180 div.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2181 div.style.top = (pageY + bubbleConfig.arrowGraphicTargetOffset) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2182
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2183 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2184 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2185 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2186
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2187 var top = pageY - Math.round(contentHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2188 top = pageY < (docHeight / 2) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2189 Math.max(top, bubbleConfig.extraPadding + bubbleConfig.borderGraphicSize) :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2190 Math.min(top, docHeight - bubbleConfig.extraPadding - bubbleConfig.borderGraphicSize - contentHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2191
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2192 if ((orientation && orientation == "left") ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2193 (!orientation &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2194 (pageX
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2195 - bubbleConfig.arrowGraphicTargetOffset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2196 - contentWidth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2197 - bubbleConfig.borderGraphicSize
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2198 - bubbleConfig.extraPadding > 0))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2199
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2200 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2201 * Position bubble left of the target point.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2202 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2203
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2204 var divArrow = createArrow("right");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2205 divArrow.style.top = (pageY - halfArrowGraphicWidth - top) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2206
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2207 div.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2208 div.style.left = (pageX - bubbleConfig.arrowGraphicTargetOffset - contentWidth) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2209 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2210
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2211 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2212 * Position bubble right of the target point, as the last resort.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2213 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2214
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2215 var divArrow = createArrow("left");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2216 divArrow.style.top = (pageY - halfArrowGraphicWidth - top) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2217
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2218 div.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2219 div.style.left = (pageX + bubbleConfig.arrowGraphicTargetOffset) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2220 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2221 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2222
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2223 document.body.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2224
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2225 return bubble;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2226 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2227
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2228 SimileAjax.Graphics.getWindowDimensions = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2229 if (typeof window.innerHeight == 'number') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2230 return { w:window.innerWidth, h:window.innerHeight }; // Non-IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2231 } else if (document.documentElement && document.documentElement.clientHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2232 return { // IE6+, in "standards compliant mode"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2233 w:document.documentElement.clientWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2234 h:document.documentElement.clientHeight
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2235 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2236 } else if (document.body && document.body.clientHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2237 return { // IE 4 compatible
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2238 w:document.body.clientWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2239 h:document.body.clientHeight
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2240 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2241 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2242 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2244
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2245 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2246 * Creates a floating, rounded message bubble in the center of the window for
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2247 * displaying modal information, e.g. "Loading..."
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2248 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2249 * @param {Document} doc the root document for the page to render on
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2250 * @param {Object} an object with two properties, contentDiv and containerDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2251 * consisting of the newly created DOM elements
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2252 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2253 SimileAjax.Graphics.createMessageBubble = function(doc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2254 var containerDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2255 if (SimileAjax.Graphics.pngIsTranslucent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2256 var topDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2257 topDiv.style.height = "33px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2258 topDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-top-left.png) top left no-repeat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2259 topDiv.style.paddingLeft = "44px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2260 containerDiv.appendChild(topDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2261
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2262 var topRightDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2263 topRightDiv.style.height = "33px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2264 topRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-top-right.png) top right no-repeat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2265 topDiv.appendChild(topRightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2266
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2267 var middleDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2268 middleDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-left.png) top left repeat-y";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2269 middleDiv.style.paddingLeft = "44px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2270 containerDiv.appendChild(middleDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2271
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2272 var middleRightDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2273 middleRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-right.png) top right repeat-y";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2274 middleRightDiv.style.paddingRight = "44px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2275 middleDiv.appendChild(middleRightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2276
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2277 var contentDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2278 middleRightDiv.appendChild(contentDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2279
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2280 var bottomDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2281 bottomDiv.style.height = "55px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2282 bottomDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-bottom-left.png) bottom left no-repeat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2283 bottomDiv.style.paddingLeft = "44px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2284 containerDiv.appendChild(bottomDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2285
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2286 var bottomRightDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2287 bottomRightDiv.style.height = "55px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2288 bottomRightDiv.style.background = "url(" + SimileAjax.urlPrefix + "images/message-bottom-right.png) bottom right no-repeat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2289 bottomDiv.appendChild(bottomRightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2290 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2291 containerDiv.style.border = "2px solid #7777AA";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2292 containerDiv.style.padding = "20px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2293 containerDiv.style.background = "white";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2294 SimileAjax.Graphics.setOpacity(containerDiv, 90);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2295
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2296 var contentDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2297 containerDiv.appendChild(contentDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2298 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2299
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2300 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2301 containerDiv: containerDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2302 contentDiv: contentDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2303 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2304 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2305
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2306 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2307 * Animation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2308 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2309 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2310
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2311 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2312 * Creates an animation for a function, and an interval of values. The word
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2313 * "animation" here is used in the sense of repeatedly calling a function with
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2314 * a current value from within an interval, and a delta value.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2315 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2316 * @param {Function} f a function to be called every 50 milliseconds throughout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2317 * the animation duration, of the form f(current, delta), where current is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2318 * the current value within the range and delta is the current change.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2319 * @param {Number} from a starting value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2320 * @param {Number} to an ending value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2321 * @param {Number} duration the duration of the animation in milliseconds
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2322 * @param {Function} [cont] an optional function that is called at the end of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2323 * the animation, i.e. a continuation.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2324 * @return {SimileAjax.Graphics._Animation} a new animation object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2325 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2326 SimileAjax.Graphics.createAnimation = function(f, from, to, duration, cont) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2327 return new SimileAjax.Graphics._Animation(f, from, to, duration, cont);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2328 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2329
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2330 SimileAjax.Graphics._Animation = function(f, from, to, duration, cont) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2331 this.f = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2332 this.cont = (typeof cont == "function") ? cont : function() {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2333
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2334 this.from = from;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2335 this.to = to;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2336 this.current = from;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2338 this.duration = duration;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2339 this.start = new Date().getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2340 this.timePassed = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2341 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2342
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2343 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2344 * Runs this animation.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2345 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2346 SimileAjax.Graphics._Animation.prototype.run = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2347 var a = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2348 window.setTimeout(function() { a.step(); }, 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2349 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2350
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2351 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2352 * Increments this animation by one step, and then continues the animation with
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2353 * <code>run()</code>.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2354 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2355 SimileAjax.Graphics._Animation.prototype.step = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2356 this.timePassed += 50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2357
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2358 var timePassedFraction = this.timePassed / this.duration;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2359 var parameterFraction = -Math.cos(timePassedFraction * Math.PI) / 2 + 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2360 var current = parameterFraction * (this.to - this.from) + this.from;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2361
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2362 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2363 this.f(current, current - this.current);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2364 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2365 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2366 this.current = current;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2367
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2368 if (this.timePassed < this.duration) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2369 this.run();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2370 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2371 this.f(this.to, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2372 this["cont"]();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2373 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2374 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2375
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2376 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2377 * CopyPasteButton
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2378 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2379 * Adapted from http://spaces.live.com/editorial/rayozzie/demo/liveclip/liveclipsample/techPreview.html.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2380 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2381 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2382
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2383 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2384 * Creates a button and textarea for displaying structured data and copying it
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2385 * to the clipboard. The data is dynamically generated by the given
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2386 * createDataFunction parameter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2387 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2388 * @param {String} image an image URL to use as the background for the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2389 * generated box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2390 * @param {Number} width the width in pixels of the generated box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2391 * @param {Number} height the height in pixels of the generated box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2392 * @param {Function} createDataFunction a function that is called with no
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2393 * arguments to generate the structured data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2394 * @return a new DOM element
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2395 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2396 SimileAjax.Graphics.createStructuredDataCopyButton = function(image, width, height, createDataFunction) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2397 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2398 div.style.position = "relative";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2399 div.style.display = "inline";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2400 div.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2401 div.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2402 div.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2403 div.style.margin = "2px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2405 if (SimileAjax.Graphics.pngIsTranslucent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2406 div.style.background = "url(" + image + ") no-repeat";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2407 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2408 div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + image +"', sizingMethod='image')";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2409 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2410
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2411 var style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2412 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2413 style = "filter:alpha(opacity=0)";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2414 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2415 style = "opacity: 0";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2416 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2417 div.innerHTML = "<textarea rows='1' autocomplete='off' value='none' style='" + style + "' />";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2418
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2419 var textarea = div.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2420 textarea.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2421 textarea.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2422 textarea.onmousedown = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2423 evt = (evt) ? evt : ((event) ? event : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2424 if (evt.button == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2425 textarea.value = createDataFunction();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2426 textarea.select();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2428 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2429
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2430 return div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2431 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2432
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2433 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2434 * getWidthHeight
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2435 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2436 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2437 SimileAjax.Graphics.getWidthHeight = function(el) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2438 // RETURNS hash {width: w, height: h} in pixels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2439
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2440 var w, h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2441 // offsetWidth rounds on FF, so doesn't work for us.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2442 // See https://bugzilla.mozilla.org/show_bug.cgi?id=458617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2443 if (el.getBoundingClientRect == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2444 // use offsetWidth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2445 w = el.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2446 h = el.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2447 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2448 // use getBoundingClientRect
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2449 var rect = el.getBoundingClientRect();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2450 w = Math.ceil(rect.right - rect.left);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2451 h = Math.ceil(rect.bottom - rect.top);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2452 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2453 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2454 width: w,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2455 height: h
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2456 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2457 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2458
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2459
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2460 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2461 * FontRenderingContext
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2462 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2463 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2464 SimileAjax.Graphics.getFontRenderingContext = function(elmt, width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2465 return new SimileAjax.Graphics._FontRenderingContext(elmt, width);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2466 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2467
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2468 SimileAjax.Graphics._FontRenderingContext = function(elmt, width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2469 this._elmt = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2470 this._elmt.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2471 if (typeof width == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2472 this._elmt.style.width = width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2473 } else if (typeof width == "number") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2474 this._elmt.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2475 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2476 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2477
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2478 SimileAjax.Graphics._FontRenderingContext.prototype.dispose = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2479 this._elmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2480 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2481
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2482 SimileAjax.Graphics._FontRenderingContext.prototype.update = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2483 this._elmt.innerHTML = "A";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2484 this._lineHeight = this._elmt.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2485 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2486
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2487 SimileAjax.Graphics._FontRenderingContext.prototype.computeSize = function(text, className) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2488 // className arg is optional
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2489 var el = this._elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2490 el.innerHTML = text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2491 el.className = className === undefined ? '' : className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2492 var wh = SimileAjax.Graphics.getWidthHeight(el);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2493 el.className = ''; // reset for the next guy
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2494
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2495 return wh;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2496 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2497
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2498 SimileAjax.Graphics._FontRenderingContext.prototype.getLineHeight = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2499 return this._lineHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2500 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2501
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2502 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2503 * @fileOverview A collection of date/time utility functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2504 * @name SimileAjax.DateTime
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2505 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2507 SimileAjax.DateTime = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2508
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2509 SimileAjax.DateTime.MILLISECOND = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2510 SimileAjax.DateTime.SECOND = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2511 SimileAjax.DateTime.MINUTE = 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2512 SimileAjax.DateTime.HOUR = 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2513 SimileAjax.DateTime.DAY = 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2514 SimileAjax.DateTime.WEEK = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2515 SimileAjax.DateTime.MONTH = 6;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2516 SimileAjax.DateTime.YEAR = 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2517 SimileAjax.DateTime.DECADE = 8;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2518 SimileAjax.DateTime.CENTURY = 9;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2519 SimileAjax.DateTime.MILLENNIUM = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2520
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2521 SimileAjax.DateTime.EPOCH = -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2522 SimileAjax.DateTime.ERA = -2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2523
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2524 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2525 * An array of unit lengths, expressed in milliseconds, of various lengths of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2526 * time. The array indices are predefined and stored as properties of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2527 * SimileAjax.DateTime object, e.g. SimileAjax.DateTime.YEAR.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2528 * @type Array
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2529 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2530 SimileAjax.DateTime.gregorianUnitLengths = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2531 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2532 var d = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2533 var a = d.gregorianUnitLengths;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2534
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2535 a[d.MILLISECOND] = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2536 a[d.SECOND] = 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2537 a[d.MINUTE] = a[d.SECOND] * 60;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2538 a[d.HOUR] = a[d.MINUTE] * 60;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2539 a[d.DAY] = a[d.HOUR] * 24;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2540 a[d.WEEK] = a[d.DAY] * 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2541 a[d.MONTH] = a[d.DAY] * 31;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2542 a[d.YEAR] = a[d.DAY] * 365;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2543 a[d.DECADE] = a[d.YEAR] * 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2544 a[d.CENTURY] = a[d.YEAR] * 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2545 a[d.MILLENNIUM] = a[d.YEAR] * 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2546 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2548 SimileAjax.DateTime._dateRegexp = new RegExp(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2549 "^(-?)([0-9]{4})(" + [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2550 "(-?([0-9]{2})(-?([0-9]{2}))?)", // -month-dayOfMonth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2551 "(-?([0-9]{3}))", // -dayOfYear
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2552 "(-?W([0-9]{2})(-?([1-7]))?)" // -Wweek-dayOfWeek
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2553 ].join("|") + ")?$"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2554 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2555 SimileAjax.DateTime._timezoneRegexp = new RegExp(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2556 "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2557 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2558 SimileAjax.DateTime._timeRegexp = new RegExp(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2559 "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(\.([0-9]+))?)?)?$"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2560 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2561
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2562 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2563 * Takes a date object and a string containing an ISO 8601 date and sets the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2564 * the date using information parsed from the string. Note that this method
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2565 * does not parse any time information.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2566 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2567 * @param {Date} dateObject the date object to modify
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2568 * @param {String} string an ISO 8601 string to parse
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2569 * @return {Date} the modified date object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2570 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2571 SimileAjax.DateTime.setIso8601Date = function(dateObject, string) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2572 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2573 * This function has been adapted from dojo.date, v.0.3.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2574 * http://dojotoolkit.org/.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2575 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2576
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2577 var d = string.match(SimileAjax.DateTime._dateRegexp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2578 if(!d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2579 throw new Error("Invalid date string: " + string);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2580 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2581
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2582 var sign = (d[1] == "-") ? -1 : 1; // BC or AD
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2583 var year = sign * d[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2584 var month = d[5];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2585 var date = d[7];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2586 var dayofyear = d[9];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2587 var week = d[11];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2588 var dayofweek = (d[13]) ? d[13] : 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2590 dateObject.setUTCFullYear(year);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2591 if (dayofyear) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2592 dateObject.setUTCMonth(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2593 dateObject.setUTCDate(Number(dayofyear));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2594 } else if (week) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2595 dateObject.setUTCMonth(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2596 dateObject.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2597 var gd = dateObject.getUTCDay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2598 var day = (gd) ? gd : 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2599 var offset = Number(dayofweek) + (7 * Number(week));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2600
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2601 if (day <= 4) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2602 dateObject.setUTCDate(offset + 1 - day);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2603 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2604 dateObject.setUTCDate(offset + 8 - day);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2605 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2606 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2607 if (month) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2608 dateObject.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2609 dateObject.setUTCMonth(month - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2610 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2611 if (date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2612 dateObject.setUTCDate(date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2613 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2614 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2615
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2616 return dateObject;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2617 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2618
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2619 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2620 * Takes a date object and a string containing an ISO 8601 time and sets the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2621 * the time using information parsed from the string. Note that this method
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2622 * does not parse any date information.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2623 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2624 * @param {Date} dateObject the date object to modify
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2625 * @param {String} string an ISO 8601 string to parse
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2626 * @return {Date} the modified date object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2627 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2628 SimileAjax.DateTime.setIso8601Time = function (dateObject, string) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2629 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2630 * This function has been adapted from dojo.date, v.0.3.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2631 * http://dojotoolkit.org/.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2632 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2633
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2634 var d = string.match(SimileAjax.DateTime._timeRegexp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2635 if(!d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2636 SimileAjax.Debug.warn("Invalid time string: " + string);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2637 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2638 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2639 var hours = d[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2640 var mins = Number((d[3]) ? d[3] : 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2641 var secs = (d[5]) ? d[5] : 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2642 var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2643
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2644 dateObject.setUTCHours(hours);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2645 dateObject.setUTCMinutes(mins);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2646 dateObject.setUTCSeconds(secs);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2647 dateObject.setUTCMilliseconds(ms);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2648
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2649 return dateObject;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2650 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2651
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2652 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2653 * The timezone offset in minutes in the user's browser.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2654 * @type Number
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2655 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2656 SimileAjax.DateTime.timezoneOffset = new Date().getTimezoneOffset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2658 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2659 * Takes a date object and a string containing an ISO 8601 date and time and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2660 * sets the date object using information parsed from the string.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2661 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2662 * @param {Date} dateObject the date object to modify
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2663 * @param {String} string an ISO 8601 string to parse
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2664 * @return {Date} the modified date object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2665 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2666 SimileAjax.DateTime.setIso8601 = function (dateObject, string){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2667 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2668 * This function has been adapted from dojo.date, v.0.3.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2669 * http://dojotoolkit.org/.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2670 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2671
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2672 var offset = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2673 var comps = (string.indexOf("T") == -1) ? string.split(" ") : string.split("T");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2674
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2675 SimileAjax.DateTime.setIso8601Date(dateObject, comps[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2676 if (comps.length == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2677 // first strip timezone info from the end
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2678 var d = comps[1].match(SimileAjax.DateTime._timezoneRegexp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2679 if (d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2680 if (d[0] == 'Z') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2681 offset = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2682 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2683 offset = (Number(d[3]) * 60) + Number(d[5]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2684 offset *= ((d[2] == '-') ? 1 : -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2686 comps[1] = comps[1].substr(0, comps[1].length - d[0].length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2687 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2688
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2689 SimileAjax.DateTime.setIso8601Time(dateObject, comps[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2690 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2691 if (offset == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2692 offset = dateObject.getTimezoneOffset(); // local time zone if no tz info
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2693 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2694 dateObject.setTime(dateObject.getTime() + offset * 60000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2695
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2696 return dateObject;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2697 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2699 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2700 * Takes a string containing an ISO 8601 date and returns a newly instantiated
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2701 * date object with the parsed date and time information from the string.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2702 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2703 * @param {String} string an ISO 8601 string to parse
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2704 * @return {Date} a new date object created from the string
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2705 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2706 SimileAjax.DateTime.parseIso8601DateTime = function (string) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2707 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2708 return SimileAjax.DateTime.setIso8601(new Date(0), string);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2709 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2710 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2711 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2712 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2713
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2714 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2715 * Takes a string containing a Gregorian date and time and returns a newly
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2716 * instantiated date object with the parsed date and time information from the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2717 * string. If the param is actually an instance of Date instead of a string,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2718 * simply returns the given date instead.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2719 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2720 * @param {Object} o an object, to either return or parse as a string
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2721 * @return {Date} the date object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2722 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2723 SimileAjax.DateTime.parseGregorianDateTime = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2724 if (o == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2725 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2726 } else if (o instanceof Date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2727 return o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2728 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2729
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2730 var s = o.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2731 if (s.length > 0 && s.length < 8) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2732 var space = s.indexOf(" ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2733 if (space > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2734 var year = parseInt(s.substr(0, space));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2735 var suffix = s.substr(space + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2736 if (suffix.toLowerCase() == "bc") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2737 year = 1 - year;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2738 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2739 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2740 var year = parseInt(s);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2742
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2743 var d = new Date(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2744 d.setUTCFullYear(year);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2746 return d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2747 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2748
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2749 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2750 return new Date(Date.parse(s));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2751 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2752 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2753 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2754 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2755
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2756 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2757 * Rounds date objects down to the nearest interval or multiple of an interval.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2758 * This method modifies the given date object, converting it to the given
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2759 * timezone if specified.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2760 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2761 * @param {Date} date the date object to round
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2762 * @param {Number} intervalUnit a constant, integer index specifying an
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2763 * interval, e.g. SimileAjax.DateTime.HOUR
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2764 * @param {Number} timeZone a timezone shift, given in hours
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2765 * @param {Number} multiple a multiple of the interval to round by
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2766 * @param {Number} firstDayOfWeek an integer specifying the first day of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2767 * week, 0 corresponds to Sunday, 1 to Monday, etc.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2768 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2769 SimileAjax.DateTime.roundDownToInterval = function(date, intervalUnit, timeZone, multiple, firstDayOfWeek) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2770 var timeShift = timeZone *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2771 SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2772
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2773 var date2 = new Date(date.getTime() + timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2774 var clearInDay = function(d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2775 d.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2776 d.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2777 d.setUTCMinutes(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2778 d.setUTCHours(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2779 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2780 var clearInYear = function(d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2781 clearInDay(d);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2782 d.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2783 d.setUTCMonth(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2784 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2785
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2786 switch(intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2787 case SimileAjax.DateTime.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2788 var x = date2.getUTCMilliseconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2789 date2.setUTCMilliseconds(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2790 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2791 case SimileAjax.DateTime.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2792 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2793
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2794 var x = date2.getUTCSeconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2795 date2.setUTCSeconds(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2796 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2797 case SimileAjax.DateTime.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2798 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2799 date2.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2800
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2801 var x = date2.getUTCMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2802 date2.setTime(date2.getTime() -
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2803 (x % multiple) * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2804 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2805 case SimileAjax.DateTime.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2806 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2807 date2.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2808 date2.setUTCMinutes(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2809
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2810 var x = date2.getUTCHours();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2811 date2.setUTCHours(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2812 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2813 case SimileAjax.DateTime.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2814 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2815 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2816 case SimileAjax.DateTime.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2817 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2818 var d = (date2.getUTCDay() + 7 - firstDayOfWeek) % 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2819 date2.setTime(date2.getTime() -
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2820 d * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.DAY]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2821 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2822 case SimileAjax.DateTime.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2823 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2824 date2.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2825
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2826 var x = date2.getUTCMonth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2827 date2.setUTCMonth(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2828 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2829 case SimileAjax.DateTime.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2830 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2831
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2832 var x = date2.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2833 date2.setUTCFullYear(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2834 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2835 case SimileAjax.DateTime.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2836 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2837 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 10) * 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2838 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2839 case SimileAjax.DateTime.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2840 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2841 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 100) * 100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2842 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2843 case SimileAjax.DateTime.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2844 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2845 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 1000) * 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2846 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2847 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2848
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2849 date.setTime(date2.getTime() - timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2850 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2851
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2852 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2853 * Rounds date objects up to the nearest interval or multiple of an interval.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2854 * This method modifies the given date object, converting it to the given
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2855 * timezone if specified.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2856 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2857 * @param {Date} date the date object to round
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2858 * @param {Number} intervalUnit a constant, integer index specifying an
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2859 * interval, e.g. SimileAjax.DateTime.HOUR
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2860 * @param {Number} timeZone a timezone shift, given in hours
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2861 * @param {Number} multiple a multiple of the interval to round by
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2862 * @param {Number} firstDayOfWeek an integer specifying the first day of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2863 * week, 0 corresponds to Sunday, 1 to Monday, etc.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2864 * @see SimileAjax.DateTime.roundDownToInterval
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2865 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2866 SimileAjax.DateTime.roundUpToInterval = function(date, intervalUnit, timeZone, multiple, firstDayOfWeek) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2867 var originalTime = date.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2868 SimileAjax.DateTime.roundDownToInterval(date, intervalUnit, timeZone, multiple, firstDayOfWeek);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2869 if (date.getTime() < originalTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2870 date.setTime(date.getTime() +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2871 SimileAjax.DateTime.gregorianUnitLengths[intervalUnit] * multiple);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2872 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2873 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2874
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2875 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2876 * Increments a date object by a specified interval, taking into
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2877 * consideration the timezone.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2878 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2879 * @param {Date} date the date object to increment
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2880 * @param {Number} intervalUnit a constant, integer index specifying an
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2881 * interval, e.g. SimileAjax.DateTime.HOUR
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2882 * @param {Number} timeZone the timezone offset in hours
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2883 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2884 SimileAjax.DateTime.incrementByInterval = function(date, intervalUnit, timeZone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2885 timeZone = (typeof timeZone == 'undefined') ? 0 : timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2886
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2887 var timeShift = timeZone *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2888 SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2889
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2890 var date2 = new Date(date.getTime() + timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2891
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2892 switch(intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2893 case SimileAjax.DateTime.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2894 date2.setTime(date2.getTime() + 1)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2895 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2896 case SimileAjax.DateTime.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2897 date2.setTime(date2.getTime() + 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2898 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2899 case SimileAjax.DateTime.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2900 date2.setTime(date2.getTime() +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2901 SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2902 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2903 case SimileAjax.DateTime.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2904 date2.setTime(date2.getTime() +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2905 SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2906 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2907 case SimileAjax.DateTime.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2908 date2.setUTCDate(date2.getUTCDate() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2909 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2910 case SimileAjax.DateTime.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2911 date2.setUTCDate(date2.getUTCDate() + 7);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2912 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2913 case SimileAjax.DateTime.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2914 date2.setUTCMonth(date2.getUTCMonth() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2915 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2916 case SimileAjax.DateTime.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2917 date2.setUTCFullYear(date2.getUTCFullYear() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2918 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2919 case SimileAjax.DateTime.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2920 date2.setUTCFullYear(date2.getUTCFullYear() + 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2921 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2922 case SimileAjax.DateTime.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2923 date2.setUTCFullYear(date2.getUTCFullYear() + 100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2924 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2925 case SimileAjax.DateTime.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2926 date2.setUTCFullYear(date2.getUTCFullYear() + 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2927 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2928 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2929
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2930 date.setTime(date2.getTime() - timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2931 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2932
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2933 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2934 * Returns a new date object with the given time offset removed.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2935 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2936 * @param {Date} date the starting date
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2937 * @param {Number} timeZone a timezone specified in an hour offset to remove
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2938 * @return {Date} a new date object with the offset removed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2939 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2940 SimileAjax.DateTime.removeTimeZoneOffset = function(date, timeZone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2941 return new Date(date.getTime() +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2942 timeZone * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2943 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2944
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2945 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2946 * Returns the timezone of the user's browser.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2947 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2948 * @return {Number} the timezone in the user's locale in hours
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2949 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2950 SimileAjax.DateTime.getTimezone = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2951 var d = new Date().getTimezoneOffset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2952 return d / -60;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2953 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2954 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2955 * String Utility Functions and Constants
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2956 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2957 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2958
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2959 String.prototype.trim = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2960 return this.replace(/^\s+|\s+$/g, '');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2961 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2962
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2963 String.prototype.startsWith = function(prefix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2964 return this.length >= prefix.length && this.substr(0, prefix.length) == prefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2965 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2966
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2967 String.prototype.endsWith = function(suffix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2968 return this.length >= suffix.length && this.substr(this.length - suffix.length) == suffix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2969 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2970
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2971 String.substitute = function(s, objects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2972 var result = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2973 var start = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2974 while (start < s.length - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2975 var percent = s.indexOf("%", start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2976 if (percent < 0 || percent == s.length - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2977 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2978 } else if (percent > start && s.charAt(percent - 1) == "\\") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2979 result += s.substring(start, percent - 1) + "%";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2980 start = percent + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2981 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2982 var n = parseInt(s.charAt(percent + 1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2983 if (isNaN(n) || n >= objects.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2984 result += s.substring(start, percent + 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2985 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2986 result += s.substring(start, percent) + objects[n].toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2987 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2988 start = percent + 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2989 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2990 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2991
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2992 if (start < s.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2993 result += s.substring(start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2994 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2995 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2996 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2997 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2998 * HTML Utility Functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
2999 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3000 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3002 SimileAjax.HTML = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3003
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3004 SimileAjax.HTML._e2uHash = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3005 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3006 var e2uHash = SimileAjax.HTML._e2uHash;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3007 e2uHash['nbsp']= '\u00A0[space]';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3008 e2uHash['iexcl']= '\u00A1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3009 e2uHash['cent']= '\u00A2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3010 e2uHash['pound']= '\u00A3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3011 e2uHash['curren']= '\u00A4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3012 e2uHash['yen']= '\u00A5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3013 e2uHash['brvbar']= '\u00A6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3014 e2uHash['sect']= '\u00A7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3015 e2uHash['uml']= '\u00A8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3016 e2uHash['copy']= '\u00A9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3017 e2uHash['ordf']= '\u00AA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3018 e2uHash['laquo']= '\u00AB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3019 e2uHash['not']= '\u00AC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3020 e2uHash['shy']= '\u00AD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3021 e2uHash['reg']= '\u00AE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3022 e2uHash['macr']= '\u00AF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3023 e2uHash['deg']= '\u00B0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3024 e2uHash['plusmn']= '\u00B1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3025 e2uHash['sup2']= '\u00B2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3026 e2uHash['sup3']= '\u00B3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3027 e2uHash['acute']= '\u00B4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3028 e2uHash['micro']= '\u00B5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3029 e2uHash['para']= '\u00B6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3030 e2uHash['middot']= '\u00B7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3031 e2uHash['cedil']= '\u00B8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3032 e2uHash['sup1']= '\u00B9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3033 e2uHash['ordm']= '\u00BA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3034 e2uHash['raquo']= '\u00BB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3035 e2uHash['frac14']= '\u00BC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3036 e2uHash['frac12']= '\u00BD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3037 e2uHash['frac34']= '\u00BE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3038 e2uHash['iquest']= '\u00BF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3039 e2uHash['Agrave']= '\u00C0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3040 e2uHash['Aacute']= '\u00C1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3041 e2uHash['Acirc']= '\u00C2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3042 e2uHash['Atilde']= '\u00C3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3043 e2uHash['Auml']= '\u00C4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3044 e2uHash['Aring']= '\u00C5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3045 e2uHash['AElig']= '\u00C6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3046 e2uHash['Ccedil']= '\u00C7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3047 e2uHash['Egrave']= '\u00C8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3048 e2uHash['Eacute']= '\u00C9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3049 e2uHash['Ecirc']= '\u00CA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3050 e2uHash['Euml']= '\u00CB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3051 e2uHash['Igrave']= '\u00CC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3052 e2uHash['Iacute']= '\u00CD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3053 e2uHash['Icirc']= '\u00CE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3054 e2uHash['Iuml']= '\u00CF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3055 e2uHash['ETH']= '\u00D0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3056 e2uHash['Ntilde']= '\u00D1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3057 e2uHash['Ograve']= '\u00D2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3058 e2uHash['Oacute']= '\u00D3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3059 e2uHash['Ocirc']= '\u00D4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3060 e2uHash['Otilde']= '\u00D5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3061 e2uHash['Ouml']= '\u00D6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3062 e2uHash['times']= '\u00D7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3063 e2uHash['Oslash']= '\u00D8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3064 e2uHash['Ugrave']= '\u00D9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3065 e2uHash['Uacute']= '\u00DA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3066 e2uHash['Ucirc']= '\u00DB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3067 e2uHash['Uuml']= '\u00DC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3068 e2uHash['Yacute']= '\u00DD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3069 e2uHash['THORN']= '\u00DE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3070 e2uHash['szlig']= '\u00DF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3071 e2uHash['agrave']= '\u00E0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3072 e2uHash['aacute']= '\u00E1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3073 e2uHash['acirc']= '\u00E2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3074 e2uHash['atilde']= '\u00E3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3075 e2uHash['auml']= '\u00E4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3076 e2uHash['aring']= '\u00E5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3077 e2uHash['aelig']= '\u00E6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3078 e2uHash['ccedil']= '\u00E7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3079 e2uHash['egrave']= '\u00E8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3080 e2uHash['eacute']= '\u00E9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3081 e2uHash['ecirc']= '\u00EA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3082 e2uHash['euml']= '\u00EB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3083 e2uHash['igrave']= '\u00EC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3084 e2uHash['iacute']= '\u00ED';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3085 e2uHash['icirc']= '\u00EE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3086 e2uHash['iuml']= '\u00EF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3087 e2uHash['eth']= '\u00F0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3088 e2uHash['ntilde']= '\u00F1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3089 e2uHash['ograve']= '\u00F2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3090 e2uHash['oacute']= '\u00F3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3091 e2uHash['ocirc']= '\u00F4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3092 e2uHash['otilde']= '\u00F5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3093 e2uHash['ouml']= '\u00F6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3094 e2uHash['divide']= '\u00F7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3095 e2uHash['oslash']= '\u00F8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3096 e2uHash['ugrave']= '\u00F9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3097 e2uHash['uacute']= '\u00FA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3098 e2uHash['ucirc']= '\u00FB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3099 e2uHash['uuml']= '\u00FC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3100 e2uHash['yacute']= '\u00FD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3101 e2uHash['thorn']= '\u00FE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3102 e2uHash['yuml']= '\u00FF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3103 e2uHash['quot']= '\u0022';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3104 e2uHash['amp']= '\u0026';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3105 e2uHash['lt']= '\u003C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3106 e2uHash['gt']= '\u003E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3107 e2uHash['OElig']= '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3108 e2uHash['oelig']= '\u0153';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3109 e2uHash['Scaron']= '\u0160';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3110 e2uHash['scaron']= '\u0161';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3111 e2uHash['Yuml']= '\u0178';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3112 e2uHash['circ']= '\u02C6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3113 e2uHash['tilde']= '\u02DC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3114 e2uHash['ensp']= '\u2002';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3115 e2uHash['emsp']= '\u2003';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3116 e2uHash['thinsp']= '\u2009';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3117 e2uHash['zwnj']= '\u200C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3118 e2uHash['zwj']= '\u200D';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3119 e2uHash['lrm']= '\u200E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3120 e2uHash['rlm']= '\u200F';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3121 e2uHash['ndash']= '\u2013';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3122 e2uHash['mdash']= '\u2014';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3123 e2uHash['lsquo']= '\u2018';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3124 e2uHash['rsquo']= '\u2019';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3125 e2uHash['sbquo']= '\u201A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3126 e2uHash['ldquo']= '\u201C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3127 e2uHash['rdquo']= '\u201D';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3128 e2uHash['bdquo']= '\u201E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3129 e2uHash['dagger']= '\u2020';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3130 e2uHash['Dagger']= '\u2021';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3131 e2uHash['permil']= '\u2030';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3132 e2uHash['lsaquo']= '\u2039';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3133 e2uHash['rsaquo']= '\u203A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3134 e2uHash['euro']= '\u20AC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3135 e2uHash['fnof']= '\u0192';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3136 e2uHash['Alpha']= '\u0391';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3137 e2uHash['Beta']= '\u0392';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3138 e2uHash['Gamma']= '\u0393';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3139 e2uHash['Delta']= '\u0394';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3140 e2uHash['Epsilon']= '\u0395';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3141 e2uHash['Zeta']= '\u0396';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3142 e2uHash['Eta']= '\u0397';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3143 e2uHash['Theta']= '\u0398';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3144 e2uHash['Iota']= '\u0399';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3145 e2uHash['Kappa']= '\u039A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3146 e2uHash['Lambda']= '\u039B';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3147 e2uHash['Mu']= '\u039C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3148 e2uHash['Nu']= '\u039D';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3149 e2uHash['Xi']= '\u039E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3150 e2uHash['Omicron']= '\u039F';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3151 e2uHash['Pi']= '\u03A0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3152 e2uHash['Rho']= '\u03A1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3153 e2uHash['Sigma']= '\u03A3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3154 e2uHash['Tau']= '\u03A4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3155 e2uHash['Upsilon']= '\u03A5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3156 e2uHash['Phi']= '\u03A6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3157 e2uHash['Chi']= '\u03A7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3158 e2uHash['Psi']= '\u03A8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3159 e2uHash['Omega']= '\u03A9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3160 e2uHash['alpha']= '\u03B1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3161 e2uHash['beta']= '\u03B2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3162 e2uHash['gamma']= '\u03B3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3163 e2uHash['delta']= '\u03B4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3164 e2uHash['epsilon']= '\u03B5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3165 e2uHash['zeta']= '\u03B6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3166 e2uHash['eta']= '\u03B7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3167 e2uHash['theta']= '\u03B8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3168 e2uHash['iota']= '\u03B9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3169 e2uHash['kappa']= '\u03BA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3170 e2uHash['lambda']= '\u03BB';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3171 e2uHash['mu']= '\u03BC';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3172 e2uHash['nu']= '\u03BD';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3173 e2uHash['xi']= '\u03BE';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3174 e2uHash['omicron']= '\u03BF';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3175 e2uHash['pi']= '\u03C0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3176 e2uHash['rho']= '\u03C1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3177 e2uHash['sigmaf']= '\u03C2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3178 e2uHash['sigma']= '\u03C3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3179 e2uHash['tau']= '\u03C4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3180 e2uHash['upsilon']= '\u03C5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3181 e2uHash['phi']= '\u03C6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3182 e2uHash['chi']= '\u03C7';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3183 e2uHash['psi']= '\u03C8';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3184 e2uHash['omega']= '\u03C9';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3185 e2uHash['thetasym']= '\u03D1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3186 e2uHash['upsih']= '\u03D2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3187 e2uHash['piv']= '\u03D6';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3188 e2uHash['bull']= '\u2022';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3189 e2uHash['hellip']= '\u2026';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3190 e2uHash['prime']= '\u2032';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3191 e2uHash['Prime']= '\u2033';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3192 e2uHash['oline']= '\u203E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3193 e2uHash['frasl']= '\u2044';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3194 e2uHash['weierp']= '\u2118';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3195 e2uHash['image']= '\u2111';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3196 e2uHash['real']= '\u211C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3197 e2uHash['trade']= '\u2122';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3198 e2uHash['alefsym']= '\u2135';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3199 e2uHash['larr']= '\u2190';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3200 e2uHash['uarr']= '\u2191';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3201 e2uHash['rarr']= '\u2192';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3202 e2uHash['darr']= '\u2193';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3203 e2uHash['harr']= '\u2194';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3204 e2uHash['crarr']= '\u21B5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3205 e2uHash['lArr']= '\u21D0';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3206 e2uHash['uArr']= '\u21D1';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3207 e2uHash['rArr']= '\u21D2';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3208 e2uHash['dArr']= '\u21D3';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3209 e2uHash['hArr']= '\u21D4';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3210 e2uHash['forall']= '\u2200';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3211 e2uHash['part']= '\u2202';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3212 e2uHash['exist']= '\u2203';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3213 e2uHash['empty']= '\u2205';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3214 e2uHash['nabla']= '\u2207';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3215 e2uHash['isin']= '\u2208';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3216 e2uHash['notin']= '\u2209';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3217 e2uHash['ni']= '\u220B';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3218 e2uHash['prod']= '\u220F';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3219 e2uHash['sum']= '\u2211';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3220 e2uHash['minus']= '\u2212';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3221 e2uHash['lowast']= '\u2217';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3222 e2uHash['radic']= '\u221A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3223 e2uHash['prop']= '\u221D';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3224 e2uHash['infin']= '\u221E';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3225 e2uHash['ang']= '\u2220';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3226 e2uHash['and']= '\u2227';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3227 e2uHash['or']= '\u2228';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3228 e2uHash['cap']= '\u2229';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3229 e2uHash['cup']= '\u222A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3230 e2uHash['int']= '\u222B';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3231 e2uHash['there4']= '\u2234';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3232 e2uHash['sim']= '\u223C';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3233 e2uHash['cong']= '\u2245';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3234 e2uHash['asymp']= '\u2248';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3235 e2uHash['ne']= '\u2260';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3236 e2uHash['equiv']= '\u2261';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3237 e2uHash['le']= '\u2264';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3238 e2uHash['ge']= '\u2265';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3239 e2uHash['sub']= '\u2282';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3240 e2uHash['sup']= '\u2283';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3241 e2uHash['nsub']= '\u2284';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3242 e2uHash['sube']= '\u2286';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3243 e2uHash['supe']= '\u2287';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3244 e2uHash['oplus']= '\u2295';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3245 e2uHash['otimes']= '\u2297';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3246 e2uHash['perp']= '\u22A5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3247 e2uHash['sdot']= '\u22C5';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3248 e2uHash['lceil']= '\u2308';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3249 e2uHash['rceil']= '\u2309';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3250 e2uHash['lfloor']= '\u230A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3251 e2uHash['rfloor']= '\u230B';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3252 e2uHash['lang']= '\u2329';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3253 e2uHash['rang']= '\u232A';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3254 e2uHash['loz']= '\u25CA';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3255 e2uHash['spades']= '\u2660';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3256 e2uHash['clubs']= '\u2663';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3257 e2uHash['hearts']= '\u2665';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3258 e2uHash['diams']= '\u2666';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3259 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3260
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3261 SimileAjax.HTML.deEntify = function(s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3262 var e2uHash = SimileAjax.HTML._e2uHash;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3263
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3264 var re = /&(\w+?);/;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3265 while (re.test(s)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3266 var m = s.match(re);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3267 s = s.replace(re, e2uHash[m[1]]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3268 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3269 return s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3270 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3271 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3272 * A basic set (in the mathematical sense) data structure
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3273 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3274 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3275 * @param {Array or SimileAjax.Set} [a] an initial collection
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3276 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3277 SimileAjax.Set = function(a) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3278 this._hash = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3279 this._count = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3280
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3281 if (a instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3282 for (var i = 0; i < a.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3283 this.add(a[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3284 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3285 } else if (a instanceof SimileAjax.Set) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3286 this.addSet(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3287 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3288 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3289
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3290 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3291 * Adds the given object to this set, assuming there it does not already exist
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3292 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3293 * @param {Object} o the object to add
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3294 * @return {Boolean} true if the object was added, false if not
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3295 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3296 SimileAjax.Set.prototype.add = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3297 if (!(o in this._hash)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3298 this._hash[o] = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3299 this._count++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3300 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3301 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3302 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3303 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3304
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3305 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3306 * Adds each element in the given set to this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3307 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3308 * @param {SimileAjax.Set} set the set of elements to add
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3309 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3310 SimileAjax.Set.prototype.addSet = function(set) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3311 for (var o in set._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3312 this.add(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3313 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3314 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3316 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3317 * Removes the given element from this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3318 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3319 * @param {Object} o the object to remove
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3320 * @return {Boolean} true if the object was successfully removed,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3321 * false otherwise
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3322 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3323 SimileAjax.Set.prototype.remove = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3324 if (o in this._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3325 delete this._hash[o];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3326 this._count--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3327 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3328 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3329 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3330 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3331
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3332 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3333 * Removes the elements in this set that correspond to the elements in the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3334 * given set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3335 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3336 * @param {SimileAjax.Set} set the set of elements to remove
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3337 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3338 SimileAjax.Set.prototype.removeSet = function(set) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3339 for (var o in set._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3340 this.remove(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3341 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3342 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3343
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3344 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3345 * Removes all elements in this set that are not present in the given set, i.e.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3346 * modifies this set to the intersection of the two sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3347 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3348 * @param {SimileAjax.Set} set the set to intersect
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3349 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3350 SimileAjax.Set.prototype.retainSet = function(set) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3351 for (var o in this._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3352 if (!set.contains(o)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3353 delete this._hash[o];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3354 this._count--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3355 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3356 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3357 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3358
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3359 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3360 * Returns whether or not the given element exists in this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3361 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3362 * @param {SimileAjax.Set} o the object to test for
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3363 * @return {Boolean} true if the object is present, false otherwise
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3364 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3365 SimileAjax.Set.prototype.contains = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3366 return (o in this._hash);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3367 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3369 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3370 * Returns the number of elements in this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3371 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3372 * @return {Number} the number of elements in this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3373 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3374 SimileAjax.Set.prototype.size = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3375 return this._count;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3376 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3377
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3378 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3379 * Returns the elements of this set as an array
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3380 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3381 * @return {Array} a new array containing the elements of this set
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3382 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3383 SimileAjax.Set.prototype.toArray = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3384 var a = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3385 for (var o in this._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3386 a.push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3387 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3388 return a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3389 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3390
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3391 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3392 * Iterates through the elements of this set, order unspecified, executing the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3393 * given function on each element until the function returns true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3394 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3395 * @param {Function} f a function of form f(element)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3396 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3397 SimileAjax.Set.prototype.visit = function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3398 for (var o in this._hash) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3399 if (f(o) == true) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3400 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3401 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3402 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3403 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3405 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3406 * A sorted array data structure
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3407 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3408 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3409 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3410 SimileAjax.SortedArray = function(compare, initialArray) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3411 this._a = (initialArray instanceof Array) ? initialArray : [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3412 this._compare = compare;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3413 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3414
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3415 SimileAjax.SortedArray.prototype.add = function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3416 var sa = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3417 var index = this.find(function(elmt2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3418 return sa._compare(elmt2, elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3419 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3420
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3421 if (index < this._a.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3422 this._a.splice(index, 0, elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3423 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3424 this._a.push(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3425 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3426 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3427
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3428 SimileAjax.SortedArray.prototype.remove = function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3429 var sa = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3430 var index = this.find(function(elmt2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3431 return sa._compare(elmt2, elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3432 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3433
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3434 while (index < this._a.length && this._compare(this._a[index], elmt) == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3435 if (this._a[index] == elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3436 this._a.splice(index, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3437 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3438 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3439 index++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3440 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3441 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3442 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3443 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3444
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3445 SimileAjax.SortedArray.prototype.removeAll = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3446 this._a = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3447 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3448
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3449 SimileAjax.SortedArray.prototype.elementAt = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3450 return this._a[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3451 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3452
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3453 SimileAjax.SortedArray.prototype.length = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3454 return this._a.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3455 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3457 SimileAjax.SortedArray.prototype.find = function(compare) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3458 var a = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3459 var b = this._a.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3460
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3461 while (a < b) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3462 var mid = Math.floor((a + b) / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3463 var c = compare(this._a[mid]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3464 if (mid == a) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3465 return c < 0 ? a+1 : a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3466 } else if (c < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3467 a = mid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3468 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3469 b = mid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3470 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3471 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3472 return a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3473 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3474
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3475 SimileAjax.SortedArray.prototype.getFirst = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3476 return (this._a.length > 0) ? this._a[0] : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3477 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3479 SimileAjax.SortedArray.prototype.getLast = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3480 return (this._a.length > 0) ? this._a[this._a.length - 1] : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3481 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3482
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3483 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3484 * Event Index
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3485 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3486 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3487
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3488 SimileAjax.EventIndex = function(unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3489 var eventIndex = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3490
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3491 this._unit = (unit != null) ? unit : SimileAjax.NativeDateUnit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3492 this._events = new SimileAjax.SortedArray(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3493 function(event1, event2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3494 return eventIndex._unit.compare(event1.getStart(), event2.getStart());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3495 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3496 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3497 this._idToEvent = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3498 this._indexed = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3499 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3500
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3501 SimileAjax.EventIndex.prototype.getUnit = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3502 return this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3503 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3504
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3505 SimileAjax.EventIndex.prototype.getEvent = function(id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3506 return this._idToEvent[id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3507 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3508
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3509 SimileAjax.EventIndex.prototype.add = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3510 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3511 this._idToEvent[evt.getID()] = evt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3512 this._indexed = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3513 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3514
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3515 SimileAjax.EventIndex.prototype.removeAll = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3516 this._events.removeAll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3517 this._idToEvent = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3518 this._indexed = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3519 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3520
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3521 SimileAjax.EventIndex.prototype.getCount = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3522 return this._events.length();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3523 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3524
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3525 SimileAjax.EventIndex.prototype.getIterator = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3526 if (!this._indexed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3527 this._index();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3528 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3529 return new SimileAjax.EventIndex._Iterator(this._events, startDate, endDate, this._unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3530 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3531
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3532 SimileAjax.EventIndex.prototype.getReverseIterator = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3533 if (!this._indexed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3534 this._index();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3536 return new SimileAjax.EventIndex._ReverseIterator(this._events, startDate, endDate, this._unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3537 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3538
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3539 SimileAjax.EventIndex.prototype.getAllIterator = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3540 return new SimileAjax.EventIndex._AllIterator(this._events);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3541 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3542
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3543 SimileAjax.EventIndex.prototype.getEarliestDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3544 var evt = this._events.getFirst();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3545 return (evt == null) ? null : evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3546 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3548 SimileAjax.EventIndex.prototype.getLatestDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3549 var evt = this._events.getLast();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3550 if (evt == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3551 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3552 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3553
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3554 if (!this._indexed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3555 this._index();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3556 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3557
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3558 var index = evt._earliestOverlapIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3559 var date = this._events.elementAt(index).getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3560 for (var i = index + 1; i < this._events.length(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3561 date = this._unit.later(date, this._events.elementAt(i).getEnd());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3562 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3563
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3564 return date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3565 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3566
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3567 SimileAjax.EventIndex.prototype._index = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3568 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3569 * For each event, we want to find the earliest preceding
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3570 * event that overlaps with it, if any.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3571 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3572
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3573 var l = this._events.length();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3574 for (var i = 0; i < l; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3575 var evt = this._events.elementAt(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3576 evt._earliestOverlapIndex = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3577 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3578
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3579 var toIndex = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3580 for (var i = 0; i < l; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3581 var evt = this._events.elementAt(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3582 var end = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3584 toIndex = Math.max(toIndex, i + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3585 while (toIndex < l) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3586 var evt2 = this._events.elementAt(toIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3587 var start2 = evt2.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3588
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3589 if (this._unit.compare(start2, end) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3590 evt2._earliestOverlapIndex = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3591 toIndex++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3592 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3593 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3594 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3595 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3596 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3597 this._indexed = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3598 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3599
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3600 SimileAjax.EventIndex._Iterator = function(events, startDate, endDate, unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3601 this._events = events;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3602 this._startDate = startDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3603 this._endDate = endDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3604 this._unit = unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3605
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3606 this._currentIndex = events.find(function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3607 return unit.compare(evt.getStart(), startDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3608 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3609 if (this._currentIndex - 1 >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3610 this._currentIndex = this._events.elementAt(this._currentIndex - 1)._earliestOverlapIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3611 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3612 this._currentIndex--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3613
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3614 this._maxIndex = events.find(function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3615 return unit.compare(evt.getStart(), endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3616 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3618 this._hasNext = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3619 this._next = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3620 this._findNext();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3621 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3623 SimileAjax.EventIndex._Iterator.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3624 hasNext: function() { return this._hasNext; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3625 next: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3626 if (this._hasNext) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3627 var next = this._next;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3628 this._findNext();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3629
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3630 return next;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3631 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3632 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3633 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3634 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3635 _findNext: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3636 var unit = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3637 while ((++this._currentIndex) < this._maxIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3638 var evt = this._events.elementAt(this._currentIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3639 if (unit.compare(evt.getStart(), this._endDate) < 0 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3640 unit.compare(evt.getEnd(), this._startDate) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3641
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3642 this._next = evt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3643 this._hasNext = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3644 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3645 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3646 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3647 this._next = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3648 this._hasNext = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3649 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3650 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3651
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3652 SimileAjax.EventIndex._ReverseIterator = function(events, startDate, endDate, unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3653 this._events = events;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3654 this._startDate = startDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3655 this._endDate = endDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3656 this._unit = unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3658 this._minIndex = events.find(function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3659 return unit.compare(evt.getStart(), startDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3660 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3661 if (this._minIndex - 1 >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3662 this._minIndex = this._events.elementAt(this._minIndex - 1)._earliestOverlapIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3663 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3664
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3665 this._maxIndex = events.find(function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3666 return unit.compare(evt.getStart(), endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3667 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3668
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3669 this._currentIndex = this._maxIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3670 this._hasNext = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3671 this._next = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3672 this._findNext();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3673 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3674
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3675 SimileAjax.EventIndex._ReverseIterator.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3676 hasNext: function() { return this._hasNext; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3677 next: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3678 if (this._hasNext) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3679 var next = this._next;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3680 this._findNext();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3681
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3682 return next;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3683 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3684 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3686 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3687 _findNext: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3688 var unit = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3689 while ((--this._currentIndex) >= this._minIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3690 var evt = this._events.elementAt(this._currentIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3691 if (unit.compare(evt.getStart(), this._endDate) < 0 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3692 unit.compare(evt.getEnd(), this._startDate) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3693
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3694 this._next = evt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3695 this._hasNext = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3696 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3697 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3698 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3699 this._next = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3700 this._hasNext = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3701 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3702 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3703
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3704 SimileAjax.EventIndex._AllIterator = function(events) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3705 this._events = events;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3706 this._index = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3707 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3708
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3709 SimileAjax.EventIndex._AllIterator.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3710 hasNext: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3711 return this._index < this._events.length();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3712 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3713 next: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3714 return this._index < this._events.length() ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3715 this._events.elementAt(this._index++) : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3716 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3717 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3718 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3719 * Default Unit
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3720 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3721 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3722
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3723 SimileAjax.NativeDateUnit = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3724
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3725 SimileAjax.NativeDateUnit.makeDefaultValue = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3726 return new Date();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3727 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3728
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3729 SimileAjax.NativeDateUnit.cloneValue = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3730 return new Date(v.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3731 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3732
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3733 SimileAjax.NativeDateUnit.getParser = function(format) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3734 if (typeof format == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3735 format = format.toLowerCase();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3736 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3737 return (format == "iso8601" || format == "iso 8601") ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3738 SimileAjax.DateTime.parseIso8601DateTime :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3739 SimileAjax.DateTime.parseGregorianDateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3740 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3742 SimileAjax.NativeDateUnit.parseFromObject = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3743 return SimileAjax.DateTime.parseGregorianDateTime(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3744 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3746 SimileAjax.NativeDateUnit.toNumber = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3747 return v.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3748 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3749
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3750 SimileAjax.NativeDateUnit.fromNumber = function(n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3751 return new Date(n);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3752 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3753
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3754 SimileAjax.NativeDateUnit.compare = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3755 var n1, n2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3756 if (typeof v1 == "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3757 n1 = v1.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3758 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3759 n1 = Number(v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3760 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3761 if (typeof v2 == "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3762 n2 = v2.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3763 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3764 n2 = Number(v2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3765 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3766
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3767 return n1 - n2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3768 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3769
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3770 SimileAjax.NativeDateUnit.earlier = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3771 return SimileAjax.NativeDateUnit.compare(v1, v2) < 0 ? v1 : v2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3772 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3773
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3774 SimileAjax.NativeDateUnit.later = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3775 return SimileAjax.NativeDateUnit.compare(v1, v2) > 0 ? v1 : v2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3776 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3777
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3778 SimileAjax.NativeDateUnit.change = function(v, n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3779 return new Date(v.getTime() + n);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3780 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3781
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3782 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3783 * General, miscellaneous SimileAjax stuff
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3784 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3785 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3786
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3787 SimileAjax.ListenerQueue = function(wildcardHandlerName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3788 this._listeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3789 this._wildcardHandlerName = wildcardHandlerName;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3790 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3791
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3792 SimileAjax.ListenerQueue.prototype.add = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3793 this._listeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3794 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3795
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3796 SimileAjax.ListenerQueue.prototype.remove = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3797 var listeners = this._listeners;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3798 for (var i = 0; i < listeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3799 if (listeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3800 listeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3801 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3802 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3803 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3804 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3805
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3806 SimileAjax.ListenerQueue.prototype.fire = function(handlerName, args) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3807 var listeners = [].concat(this._listeners);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3808 for (var i = 0; i < listeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3809 var listener = listeners[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3810 if (handlerName in listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3811 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3812 listener[handlerName].apply(listener, args);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3813 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3814 SimileAjax.Debug.exception("Error firing event of name " + handlerName, e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3815 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3816 } else if (this._wildcardHandlerName != null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3817 this._wildcardHandlerName in listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3818 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3819 listener[this._wildcardHandlerName].apply(listener, [ handlerName ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3820 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3821 SimileAjax.Debug.exception("Error firing event of name " + handlerName + " to wildcard handler", e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3822 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3823 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3824 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3825 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3827 /*======================================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3828 * History
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3829 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3830 * This is a singleton that keeps track of undoable user actions and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3831 * performs undos and redos in response to the browser's Back and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3832 * Forward buttons.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3833 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3834 * Call addAction(action) to register an undoable user action. action
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3835 * must have 4 fields:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3836 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3837 * perform: an argument-less function that carries out the action
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3838 * undo: an argument-less function that undos the action
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3839 * label: a short, user-friendly string describing the action
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3840 * uiLayer: the UI layer on which the action takes place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3841 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3842 * By default, the history keeps track of upto 10 actions. You can
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3843 * configure this behavior by setting
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3844 * SimileAjax.History.maxHistoryLength
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3845 * to a different number.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3846 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3847 * An iframe is inserted into the document's body element to track
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3848 * onload events.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3849 *======================================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3850 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3851
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3852 SimileAjax.History = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3853 maxHistoryLength: 10,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3854 historyFile: "__history__.html",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3855 enabled: true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3856
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3857 _initialized: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3858 _listeners: new SimileAjax.ListenerQueue(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3859
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3860 _actions: [],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3861 _baseIndex: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3862 _currentIndex: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3863
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3864 _plainDocumentTitle: document.title
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3865 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3866
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3867 SimileAjax.History.formatHistoryEntryTitle = function(actionLabel) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3868 return SimileAjax.History._plainDocumentTitle + " {" + actionLabel + "}";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3869 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3870
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3871 SimileAjax.History.initialize = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3872 if (SimileAjax.History._initialized) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3873 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3874 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3875
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3876 if (SimileAjax.History.enabled) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3877 var iframe = document.createElement("iframe");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3878 iframe.id = "simile-ajax-history";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3879 iframe.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3880 iframe.style.width = "10px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3881 iframe.style.height = "10px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3882 iframe.style.top = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3883 iframe.style.left = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3884 iframe.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3885 iframe.src = SimileAjax.History.historyFile + "?0";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3886
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3887 document.body.appendChild(iframe);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3888 SimileAjax.DOM.registerEvent(iframe, "load", SimileAjax.History._handleIFrameOnLoad);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3889
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3890 SimileAjax.History._iframe = iframe;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3891 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3892 SimileAjax.History._initialized = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3893 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3894
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3895 SimileAjax.History.addListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3896 SimileAjax.History.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3897
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3898 SimileAjax.History._listeners.add(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3899 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3900
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3901 SimileAjax.History.removeListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3902 SimileAjax.History.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3904 SimileAjax.History._listeners.remove(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3905 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3906
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3907 SimileAjax.History.addAction = function(action) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3908 SimileAjax.History.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3909
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3910 SimileAjax.History._listeners.fire("onBeforePerform", [ action ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3911 window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3912 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3913 action.perform();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3914 SimileAjax.History._listeners.fire("onAfterPerform", [ action ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3916 if (SimileAjax.History.enabled) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3917 SimileAjax.History._actions = SimileAjax.History._actions.slice(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3918 0, SimileAjax.History._currentIndex - SimileAjax.History._baseIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3919
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3920 SimileAjax.History._actions.push(action);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3921 SimileAjax.History._currentIndex++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3923 var diff = SimileAjax.History._actions.length - SimileAjax.History.maxHistoryLength;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3924 if (diff > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3925 SimileAjax.History._actions = SimileAjax.History._actions.slice(diff);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3926 SimileAjax.History._baseIndex += diff;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3927 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3928
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3929 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3930 SimileAjax.History._iframe.contentWindow.location.search =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3931 "?" + SimileAjax.History._currentIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3932 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3933 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3934 * We can't modify location.search most probably because it's a file:// url.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3935 * We'll just going to modify the document's title.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3936 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3937 var title = SimileAjax.History.formatHistoryEntryTitle(action.label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3938 document.title = title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3939 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3940 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3941 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3942 SimileAjax.Debug.exception(e, "Error adding action {" + action.label + "} to history");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3943 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3944 }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3945 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3946
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3947 SimileAjax.History.addLengthyAction = function(perform, undo, label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3948 SimileAjax.History.addAction({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3949 perform: perform,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3950 undo: undo,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3951 label: label,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3952 uiLayer: SimileAjax.WindowManager.getBaseLayer(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3953 lengthy: true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3954 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3955 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3956
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3957 SimileAjax.History._handleIFrameOnLoad = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3958 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3959 * This function is invoked when the user herself
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3960 * navigates backward or forward. We need to adjust
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3961 * the application's state accordingly.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3962 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3963
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3964 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3965 var q = SimileAjax.History._iframe.contentWindow.location.search;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3966 var c = (q.length == 0) ? 0 : Math.max(0, parseInt(q.substr(1)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3967
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3968 var finishUp = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3969 var diff = c - SimileAjax.History._currentIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3970 SimileAjax.History._currentIndex += diff;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3971 SimileAjax.History._baseIndex += diff;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3972
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3973 SimileAjax.History._iframe.contentWindow.location.search = "?" + c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3974 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3975
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3976 if (c < SimileAjax.History._currentIndex) { // need to undo
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3977 SimileAjax.History._listeners.fire("onBeforeUndoSeveral", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3978 window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3979 while (SimileAjax.History._currentIndex > c &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3980 SimileAjax.History._currentIndex > SimileAjax.History._baseIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3981
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3982 SimileAjax.History._currentIndex--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3983
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3984 var action = SimileAjax.History._actions[SimileAjax.History._currentIndex - SimileAjax.History._baseIndex];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3985
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3986 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3987 action.undo();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3988 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3989 SimileAjax.Debug.exception(e, "History: Failed to undo action {" + action.label + "}");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3990 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3991 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3992
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3993 SimileAjax.History._listeners.fire("onAfterUndoSeveral", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3994 finishUp();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3995 }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3996 } else if (c > SimileAjax.History._currentIndex) { // need to redo
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3997 SimileAjax.History._listeners.fire("onBeforeRedoSeveral", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3998 window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
3999 while (SimileAjax.History._currentIndex < c &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4000 SimileAjax.History._currentIndex - SimileAjax.History._baseIndex < SimileAjax.History._actions.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4002 var action = SimileAjax.History._actions[SimileAjax.History._currentIndex - SimileAjax.History._baseIndex];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4003
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4004 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4005 action.perform();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4006 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4007 SimileAjax.Debug.exception(e, "History: Failed to redo action {" + action.label + "}");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4008 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4010 SimileAjax.History._currentIndex++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4011 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4012
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4013 SimileAjax.History._listeners.fire("onAfterRedoSeveral", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4014 finishUp();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4015 }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4016 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4017 var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4018 var title = (index >= 0 && index < SimileAjax.History._actions.length) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4019 SimileAjax.History.formatHistoryEntryTitle(SimileAjax.History._actions[index].label) :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4020 SimileAjax.History._plainDocumentTitle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4021
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4022 SimileAjax.History._iframe.contentWindow.document.title = title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4023 document.title = title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4024 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4025 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4026 // silent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4027 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4028 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4029
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4030 SimileAjax.History.getNextUndoAction = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4031 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4032 var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4033 return SimileAjax.History._actions[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4034 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4035 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4036 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4037 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4038
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4039 SimileAjax.History.getNextRedoAction = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4040 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4041 var index = SimileAjax.History._currentIndex - SimileAjax.History._baseIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4042 return SimileAjax.History._actions[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4043 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4044 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4045 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4046 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4047 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4048 * @fileOverview UI layers and window-wide dragging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4049 * @name SimileAjax.WindowManager
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4050 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4052 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4053 * This is a singleton that keeps track of UI layers (modal and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4054 * modeless) and enables/disables UI elements based on which layers
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4055 * they belong to. It also provides window-wide dragging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4056 * implementation.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4057 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4058 SimileAjax.WindowManager = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4059 _initialized: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4060 _listeners: [],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4061
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4062 _draggedElement: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4063 _draggedElementCallback: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4064 _dropTargetHighlightElement: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4065 _lastCoords: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4066 _ghostCoords: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4067 _draggingMode: "",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4068 _dragging: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4069
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4070 _layers: []
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4071 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4072
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4073 SimileAjax.WindowManager.initialize = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4074 if (SimileAjax.WindowManager._initialized) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4075 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4076 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4077
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4078 SimileAjax.DOM.registerEvent(document.body, "mousedown", SimileAjax.WindowManager._onBodyMouseDown);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4079 SimileAjax.DOM.registerEvent(document.body, "mousemove", SimileAjax.WindowManager._onBodyMouseMove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4080 SimileAjax.DOM.registerEvent(document.body, "mouseup", SimileAjax.WindowManager._onBodyMouseUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4081 SimileAjax.DOM.registerEvent(document, "keydown", SimileAjax.WindowManager._onBodyKeyDown);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4082 SimileAjax.DOM.registerEvent(document, "keyup", SimileAjax.WindowManager._onBodyKeyUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4083
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4084 SimileAjax.WindowManager._layers.push({index: 0});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4085
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4086 SimileAjax.WindowManager._historyListener = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4087 onBeforeUndoSeveral: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4088 onAfterUndoSeveral: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4089 onBeforeUndo: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4090 onAfterUndo: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4091
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4092 onBeforeRedoSeveral: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4093 onAfterRedoSeveral: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4094 onBeforeRedo: function() {},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4095 onAfterRedo: function() {}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4096 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4097 SimileAjax.History.addListener(SimileAjax.WindowManager._historyListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4098
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4099 SimileAjax.WindowManager._initialized = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4100 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4101
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4102 SimileAjax.WindowManager.getBaseLayer = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4103 SimileAjax.WindowManager.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4104 return SimileAjax.WindowManager._layers[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4105 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4106
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4107 SimileAjax.WindowManager.getHighestLayer = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4108 SimileAjax.WindowManager.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4109 return SimileAjax.WindowManager._layers[SimileAjax.WindowManager._layers.length - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4110 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4112 SimileAjax.WindowManager.registerEventWithObject = function(elmt, eventName, obj, handlerName, layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4113 SimileAjax.WindowManager.registerEvent(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4114 elmt,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4115 eventName,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4116 function(elmt2, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4117 return obj[handlerName].call(obj, elmt2, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4118 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4119 layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4120 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4121 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4122
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4123 SimileAjax.WindowManager.registerEvent = function(elmt, eventName, handler, layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4124 if (layer == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4125 layer = SimileAjax.WindowManager.getHighestLayer();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4126 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4127
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4128 var handler2 = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4129 if (SimileAjax.WindowManager._canProcessEventAtLayer(layer)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4130 SimileAjax.WindowManager._popToLayer(layer.index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4131 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4132 handler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4133 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4134 SimileAjax.Debug.exception(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4135 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4136 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4137 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4138 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4139 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4141 SimileAjax.DOM.registerEvent(elmt, eventName, handler2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4142 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4143
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4144 SimileAjax.WindowManager.pushLayer = function(f, ephemeral, elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4145 var layer = { onPop: f, index: SimileAjax.WindowManager._layers.length, ephemeral: (ephemeral), elmt: elmt };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4146 SimileAjax.WindowManager._layers.push(layer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4147
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4148 return layer;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4149 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4150
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4151 SimileAjax.WindowManager.popLayer = function(layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4152 for (var i = 1; i < SimileAjax.WindowManager._layers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4153 if (SimileAjax.WindowManager._layers[i] == layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4154 SimileAjax.WindowManager._popToLayer(i - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4155 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4156 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4157 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4158 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4159
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4160 SimileAjax.WindowManager.popAllLayers = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4161 SimileAjax.WindowManager._popToLayer(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4162 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4163
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4164 SimileAjax.WindowManager.registerForDragging = function(elmt, callback, layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4165 SimileAjax.WindowManager.registerEvent(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4166 elmt,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4167 "mousedown",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4168 function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4169 SimileAjax.WindowManager._handleMouseDown(elmt, evt, callback);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4170 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4171 layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4172 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4173 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4174
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4175 SimileAjax.WindowManager._popToLayer = function(level) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4176 while (level+1 < SimileAjax.WindowManager._layers.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4177 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4178 var layer = SimileAjax.WindowManager._layers.pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4179 if (layer.onPop != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4180 layer.onPop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4182 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4184 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4185 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4186
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4187 SimileAjax.WindowManager._canProcessEventAtLayer = function(layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4188 if (layer.index == (SimileAjax.WindowManager._layers.length - 1)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4189 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4190 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4191 for (var i = layer.index + 1; i < SimileAjax.WindowManager._layers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4192 if (!SimileAjax.WindowManager._layers[i].ephemeral) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4193 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4194 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4195 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4196 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4197 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4198
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4199 SimileAjax.WindowManager.cancelPopups = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4200 var evtCoords = (evt) ? SimileAjax.DOM.getEventPageCoordinates(evt) : { x: -1, y: -1 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4201
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4202 var i = SimileAjax.WindowManager._layers.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4203 while (i > 0 && SimileAjax.WindowManager._layers[i].ephemeral) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4204 var layer = SimileAjax.WindowManager._layers[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4205 if (layer.elmt != null) { // if event falls within main element of layer then don't cancel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4206 var elmt = layer.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4207 var elmtCoords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4208 if (evtCoords.x >= elmtCoords.left && evtCoords.x < (elmtCoords.left + elmt.offsetWidth) &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4209 evtCoords.y >= elmtCoords.top && evtCoords.y < (elmtCoords.top + elmt.offsetHeight)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4210 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4211 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4212 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4213 i--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4214 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4215 SimileAjax.WindowManager._popToLayer(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4216 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4217
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4218 SimileAjax.WindowManager._onBodyMouseDown = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4219 if (!("eventPhase" in evt) || evt.eventPhase == evt.BUBBLING_PHASE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4220 SimileAjax.WindowManager.cancelPopups(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4221 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4222 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4223
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4224 SimileAjax.WindowManager._handleMouseDown = function(elmt, evt, callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4225 SimileAjax.WindowManager._draggedElement = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4226 SimileAjax.WindowManager._draggedElementCallback = callback;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4227 SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4228
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4229 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4230 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4231 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4232
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4233 SimileAjax.WindowManager._onBodyKeyDown = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4234 if (SimileAjax.WindowManager._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4235 if (evt.keyCode == 27) { // esc
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4236 SimileAjax.WindowManager._cancelDragging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4237 } else if ((evt.keyCode == 17 || evt.keyCode == 16) && SimileAjax.WindowManager._draggingMode != "copy") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4238 SimileAjax.WindowManager._draggingMode = "copy";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4239
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4240 var img = SimileAjax.Graphics.createTranslucentImage(SimileAjax.urlPrefix + "images/copy.png");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4241 img.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4242 img.style.left = (SimileAjax.WindowManager._ghostCoords.left - 16) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4243 img.style.top = (SimileAjax.WindowManager._ghostCoords.top) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4244 document.body.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4246 SimileAjax.WindowManager._draggingModeIndicatorElmt = img;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4247 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4248 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4249 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4250
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4251 SimileAjax.WindowManager._onBodyKeyUp = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4252 if (SimileAjax.WindowManager._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4253 if (evt.keyCode == 17 || evt.keyCode == 16) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4254 SimileAjax.WindowManager._draggingMode = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4255 if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4256 document.body.removeChild(SimileAjax.WindowManager._draggingModeIndicatorElmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4257 SimileAjax.WindowManager._draggingModeIndicatorElmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4258 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4259 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4261 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4262
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4263 SimileAjax.WindowManager._onBodyMouseMove = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4264 if (SimileAjax.WindowManager._draggedElement != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4265 var callback = SimileAjax.WindowManager._draggedElementCallback;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4266
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4267 var lastCoords = SimileAjax.WindowManager._lastCoords;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4268 var diffX = evt.clientX - lastCoords.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4269 var diffY = evt.clientY - lastCoords.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4271 if (!SimileAjax.WindowManager._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4272 if (Math.abs(diffX) > 5 || Math.abs(diffY) > 5) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4273 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4274 if ("onDragStart" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4275 callback.onDragStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4276 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4277
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4278 if ("ghost" in callback && callback.ghost) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4279 var draggedElmt = SimileAjax.WindowManager._draggedElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4280
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4281 SimileAjax.WindowManager._ghostCoords = SimileAjax.DOM.getPageCoordinates(draggedElmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4282 SimileAjax.WindowManager._ghostCoords.left += diffX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4283 SimileAjax.WindowManager._ghostCoords.top += diffY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4285 var ghostElmt = draggedElmt.cloneNode(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4286 ghostElmt.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4287 ghostElmt.style.left = SimileAjax.WindowManager._ghostCoords.left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4288 ghostElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4289 ghostElmt.style.zIndex = 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4290 SimileAjax.Graphics.setOpacity(ghostElmt, 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4291
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4292 document.body.appendChild(ghostElmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4293 callback._ghostElmt = ghostElmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4294 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4295
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4296 SimileAjax.WindowManager._dragging = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4297 SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4298
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4299 document.body.focus();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4300 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4301 SimileAjax.Debug.exception("WindowManager: Error handling mouse down", e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4302 SimileAjax.WindowManager._cancelDragging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4303 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4304 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4305 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4306 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4307 SimileAjax.WindowManager._lastCoords = { x: evt.clientX, y: evt.clientY };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4308
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4309 if ("onDragBy" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4310 callback.onDragBy(diffX, diffY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4312
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4313 if ("_ghostElmt" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4314 var ghostElmt = callback._ghostElmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4316 SimileAjax.WindowManager._ghostCoords.left += diffX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4317 SimileAjax.WindowManager._ghostCoords.top += diffY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4318
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4319 ghostElmt.style.left = SimileAjax.WindowManager._ghostCoords.left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4320 ghostElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4321 if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4322 var indicatorElmt = SimileAjax.WindowManager._draggingModeIndicatorElmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4323
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4324 indicatorElmt.style.left = (SimileAjax.WindowManager._ghostCoords.left - 16) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4325 indicatorElmt.style.top = SimileAjax.WindowManager._ghostCoords.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4326 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4327
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4328 if ("droppable" in callback && callback.droppable) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4329 var coords = SimileAjax.DOM.getEventPageCoordinates(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4330 var target = SimileAjax.DOM.hittest(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4331 coords.x, coords.y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4332 [ SimileAjax.WindowManager._ghostElmt,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4333 SimileAjax.WindowManager._dropTargetHighlightElement
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4334 ]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4335 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4336 target = SimileAjax.WindowManager._findDropTarget(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4338 if (target != SimileAjax.WindowManager._potentialDropTarget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4339 if (SimileAjax.WindowManager._dropTargetHighlightElement != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4340 document.body.removeChild(SimileAjax.WindowManager._dropTargetHighlightElement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4341
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4342 SimileAjax.WindowManager._dropTargetHighlightElement = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4343 SimileAjax.WindowManager._potentialDropTarget = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4344 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4345
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4346 var droppable = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4347 if (target != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4348 if ((!("canDropOn" in callback) || callback.canDropOn(target)) &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4349 (!("canDrop" in target) || target.canDrop(SimileAjax.WindowManager._draggedElement))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4350
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4351 droppable = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4352 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4353 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4354
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4355 if (droppable) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4356 var border = 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4357 var targetCoords = SimileAjax.DOM.getPageCoordinates(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4358 var highlight = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4359 highlight.style.border = border + "px solid yellow";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4360 highlight.style.backgroundColor = "yellow";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4361 highlight.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4362 highlight.style.left = targetCoords.left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4363 highlight.style.top = targetCoords.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4364 highlight.style.width = (target.offsetWidth - border * 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4365 highlight.style.height = (target.offsetHeight - border * 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4366 SimileAjax.Graphics.setOpacity(highlight, 30);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4367 document.body.appendChild(highlight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4369 SimileAjax.WindowManager._potentialDropTarget = target;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4370 SimileAjax.WindowManager._dropTargetHighlightElement = highlight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4371 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4372 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4373 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4374 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4375 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4376 SimileAjax.Debug.exception("WindowManager: Error handling mouse move", e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4377 SimileAjax.WindowManager._cancelDragging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4378 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4379 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4380
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4381 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4382 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4384 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4386 SimileAjax.WindowManager._onBodyMouseUp = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4387 if (SimileAjax.WindowManager._draggedElement != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4388 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4389 if (SimileAjax.WindowManager._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4390 var callback = SimileAjax.WindowManager._draggedElementCallback;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4391 if ("onDragEnd" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4392 callback.onDragEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4393 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4394 if ("droppable" in callback && callback.droppable) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4395 var dropped = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4396
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4397 var target = SimileAjax.WindowManager._potentialDropTarget;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4398 if (target != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4399 if ((!("canDropOn" in callback) || callback.canDropOn(target)) &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4400 (!("canDrop" in target) || target.canDrop(SimileAjax.WindowManager._draggedElement))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4401
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4402 if ("onDropOn" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4403 callback.onDropOn(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4404 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4405 target.ondrop(SimileAjax.WindowManager._draggedElement, SimileAjax.WindowManager._draggingMode);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4406
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4407 dropped = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4408 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4409 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4410
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4411 if (!dropped) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4412 // TODO: do holywood explosion here
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4413 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4414 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4415 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4416 } finally {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4417 SimileAjax.WindowManager._cancelDragging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4418 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4419
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4420 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4421 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4422 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4423 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4424
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4425 SimileAjax.WindowManager._cancelDragging = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4426 var callback = SimileAjax.WindowManager._draggedElementCallback;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4427 if ("_ghostElmt" in callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4428 var ghostElmt = callback._ghostElmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4429 document.body.removeChild(ghostElmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4430
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4431 delete callback._ghostElmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4432 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4433 if (SimileAjax.WindowManager._dropTargetHighlightElement != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4434 document.body.removeChild(SimileAjax.WindowManager._dropTargetHighlightElement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4435 SimileAjax.WindowManager._dropTargetHighlightElement = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4436 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4437 if (SimileAjax.WindowManager._draggingModeIndicatorElmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4438 document.body.removeChild(SimileAjax.WindowManager._draggingModeIndicatorElmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4439 SimileAjax.WindowManager._draggingModeIndicatorElmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4440 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4441
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4442 SimileAjax.WindowManager._draggedElement = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4443 SimileAjax.WindowManager._draggedElementCallback = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4444 SimileAjax.WindowManager._potentialDropTarget = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4445 SimileAjax.WindowManager._dropTargetHighlightElement = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4446 SimileAjax.WindowManager._lastCoords = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4447 SimileAjax.WindowManager._ghostCoords = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4448 SimileAjax.WindowManager._draggingMode = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4449 SimileAjax.WindowManager._dragging = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4450 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4451
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4452 SimileAjax.WindowManager._findDropTarget = function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4453 while (elmt != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4454 if ("ondrop" in elmt && (typeof elmt.ondrop) == "function") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4455 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4456 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4457 elmt = elmt.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4458 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4459 return elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4460 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4461 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4462 * timeline.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4463 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4464 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4465 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4466 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4467 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4468 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4469 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4470 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4471 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4472 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4473 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4474 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4475 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4476 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4477 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4478 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4479 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4480 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4481
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4482 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4483 * basic code which is included in front of timeline code for the minified version
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4484 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4485 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4486 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4487 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4488 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4489
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4490 Timeline_urlPrefix = GeoTemCoMinifier_urlPrefix + 'lib/simile/timeline/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4491
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4492 SimileAjax.History.enabled = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4493
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4494 if ( typeof window.Timeline == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4495 window.Timeline = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4496 Timeline.urlPrefix = Timeline_urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4497 window.Timeline.DateTime = window.SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4498 // for backward compatibility
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4499 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4500 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4501 * Timeline API
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4502 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4503 * This file will load all the Javascript files
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4504 * necessary to make the standard timeline work.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4505 * It also detects the default locale.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4506 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4507 * To run from the MIT copy of Timeline:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4508 * Include this file in your HTML file as follows:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4509 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4510 * <script src="http://api.simile-widgets.org/timeline/2.3.1/timeline-api.js"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4511 * type="text/javascript"></script>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4512 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4513 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4514 * To host the Timeline files on your own server:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4515 * 1) Install the Timeline and Simile-Ajax files onto your webserver using
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4516 * timeline_libraries.zip or timeline_source.zip
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4517 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4518 * 2) Set global js variables used to send parameters to this script:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4519 * Timeline_ajax_url -- url for simile-ajax-api.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4520 * Timeline_urlPrefix -- url for the *directory* that contains timeline-api.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4521 * Include trailing slash
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4522 * Timeline_parameters='bundle=true'; // you must set bundle to true if you are using
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4523 * // timeline_libraries.zip since only the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4524 * // bundled libraries are included
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4525 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4526 * eg your html page would include
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4527 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4528 * <script>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4529 * Timeline_ajax_url="http://YOUR_SERVER/javascripts/timeline/timeline_ajax/simile-ajax-api.js";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4530 * Timeline_urlPrefix='http://YOUR_SERVER/javascripts/timeline/timeline_js/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4531 * Timeline_parameters='bundle=true';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4532 * </script>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4533 * <script src="http://YOUR_SERVER/javascripts/timeline/timeline_js/timeline-api.js"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4534 * type="text/javascript">
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4535 * </script>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4536 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4537 * SCRIPT PARAMETERS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4538 * This script auto-magically figures out locale and has defaults for other parameters
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4539 * To set parameters explicity, set js global variable Timeline_parameters or include as
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4540 * parameters on the url using GET style. Eg the two next lines pass the same parameters:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4541 * Timeline_parameters='bundle=true'; // pass parameter via js variable
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4542 * <script src="http://....timeline-api.js?bundle=true" // pass parameter via url
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4543 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4544 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4545 * PARAMETERS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4546 * specified as a query string in the url or as Timeline_parameters = 'bundle=true&defaultLocale=cs';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4547 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4548 * timeline-use-local-resources -- not handled when in Timeline_parameters
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4549 * bundle -- true: use the single js bundle file; false: load individual files (for debugging)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4550 * locales -- loads a comma separated list of locales, which will be available for use when requested,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4551 * e.g. &locales=es,fr,it
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4552 * defaultLocale -- sets a default locale, however it will be overridden by browser locale if different,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4553 * e.g. defaultLocale = cs yet browser is set to en or en-US
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4554 * forceLocale -- force locale to be a particular value--used for debugging. Normally locale is determined
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4555 * by browser's and server's locale settings.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4556 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4557 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4558
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4559 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4560 var useLocalResources = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4561 if (document.location.search.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4562 var params = document.location.search.substr(1).split("&");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4563 for (var i = 0; i < params.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4564 if (params[i] == "timeline-use-local-resources") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4565 useLocalResources = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4566 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4567 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4568 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4569
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4570 var loadMe = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4571
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4572 if ("Timeline" in window) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4573 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4574 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4575
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4576 if( window.SimileAjax.DateTime == undefined ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4577 window.SimileAjax.DateTime = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4579
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4580 window.Timeline = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4581 window.Timeline.DateTime = window.SimileAjax.DateTime; // for backward compatibility
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4582 window.Timeline.loaded = { core : {}, localized : {} };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4583 if ( !window.console ) { window.console = { log : {}, error : {}, info : {} }; }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4584
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4585 var bundle = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4586 var javascriptFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4587 "timeline.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4588 "band.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4589 "themes.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4590 "ethers.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4591 "ether-painters.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4592 "event-utils.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4593 "labellers.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4594 "sources.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4595 "original-painter.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4596 "detailed-painter.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4597 "overview-painter.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4598 "compact-painter.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4599 "decorators.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4600 "units.js"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4601 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4602 var cssFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4603 "timeline.css",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4604 "ethers.css",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4605 "events.css"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4606 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4608 var localizedJavascriptFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4609 "timeline.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4610 "labellers.js"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4611 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4612 var localizedCssFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4613 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4614
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4615 // ISO-639 language codes, ISO-3166 country codes (2 characters)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4616 var supportedLocales = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4617 "cs", // Czech
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4618 "de", // German
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4619 "en", // English
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4620 "es", // Spanish
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4621 "fr", // French
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4622 "it", // Italian
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4623 "nl", // Dutch (The Netherlands)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4624 "ru", // Russian
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4625 "se", // Swedish
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4626 "tr", // Turkish
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4627 "vi", // Vietnamese
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4628 "zh" // Chinese
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4629 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4630
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4631 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4632 var desiredLocales = [ "en" ],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4633 defaultServerLocale = "en",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4634 forceLocale = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4635
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4636 var parseURLParameters = function(parameters) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4637 var params = parameters.split("&");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4638 for (var p = 0; p < params.length; p++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4639 var pair = params[p].split("=");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4640 if (pair[0] == "locales") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4641 desiredLocales = desiredLocales.concat(pair[1].split(","));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4642 } else if (pair[0] == "defaultLocale") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4643 defaultServerLocale = pair[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4644 } else if (pair[0] == "forceLocale") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4645 forceLocale = pair[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4646 desiredLocales = desiredLocales.concat(pair[1].split(","));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4647 } else if (pair[0] == "bundle") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4648 bundle = pair[1] != "false";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4649 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4650 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4651 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4652
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4653 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4654 if (typeof Timeline_urlPrefix == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4655 Timeline.urlPrefix = Timeline_urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4656 if (typeof Timeline_parameters == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4657 parseURLParameters(Timeline_parameters);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4658 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4659 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4660 var heads = document.documentElement.getElementsByTagName("head");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4661 for (var h = 0; h < heads.length; h++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4662 var scripts = heads[h].getElementsByTagName("script");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4663 for (var s = 0; s < scripts.length; s++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4664 var url = scripts[s].src;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4665 var i = url.indexOf("timeline-api.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4666 if (i >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4667 Timeline.urlPrefix = url.substr(0, i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4668 var q = url.indexOf("?");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4669 if (q > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4670 parseURLParameters(url.substr(q + 1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4672 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4673 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4674 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4675 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4676 throw new Error("Failed to derive URL prefix for Timeline API code files");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4677 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4678 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4679
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4680 var includeJavascriptFiles = function(urlPrefix, filenames) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4681 SimileAjax.includeJavascriptFiles(document, urlPrefix, filenames);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4682 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4683 var includeCssFiles = function(urlPrefix, filenames) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4684 SimileAjax.includeCssFiles(document, urlPrefix, filenames);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4686
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4687 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4688 * Include non-localized files
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4689 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4690 var js_files_to_load = (bundle) ? [ "timeline-bundle.js" ] : javascriptFiles;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4691
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4692 window.SimileAjax_onLoad = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4693 Timeline.loaded.core.files = js_files_to_load;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4694 Timeline.loaded.core.loaded = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4695 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4696
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4697 if (bundle) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4698 includeJavascriptFiles(Timeline.urlPrefix, [ "timeline-bundle.js" ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4699 includeCssFiles(Timeline.urlPrefix, [ "timeline-bundle.css" ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4700 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4701 includeJavascriptFiles(Timeline.urlPrefix + "scripts/", javascriptFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4702 includeCssFiles(Timeline.urlPrefix + "styles/", cssFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4703 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4704
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4705 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4706 * Include localized files
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4707 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4708 var loadLocale = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4709
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4710 var tryExactLocale = function(locale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4711
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4712 for (var l = 0; l < supportedLocales.length; l++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4713
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4714 if (locale == supportedLocales[l]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4715
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4716 loadLocale[locale] = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4717 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4719 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4720
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4721 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4722
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4723 console.error('Timeline locale [' + locale + '] is not yet supported');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4724 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4725
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4726 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4728 var tryLocale = function(locale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4729
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4730 var dash = locale.indexOf("-");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4731
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4732 if (dash > 0 && tryExactLocale(locale.substr(0, dash))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4733 return locale.substr(0, dash);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4734 } else if (tryExactLocale(locale)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4735 return locale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4736 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4737
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4738 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4739 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4740
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4742 if ( !tryExactLocale( defaultServerLocale ) ) { defaultServerLocale = 'en'; }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4743 loadLocale[defaultServerLocale] = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4744
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4746 for (var l = 0; l < desiredLocales.length; l++) { tryLocale(desiredLocales[l]); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4747
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4748 var defaultClientLocale = defaultServerLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4749 var defaultClientLocales = ("language" in navigator ? navigator.language : navigator.browserLanguage).split(";");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4750
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4751 for (var l = 0; l < defaultClientLocales.length; l++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4752
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4753 var locale = tryLocale(defaultClientLocales[l]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4754
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4755 if (locale != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4756
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4757 defaultClientLocale = locale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4758 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4759
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4760 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4761
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4762 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4763
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4764
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4765 (function loadLocales() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4766
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4767 var iteration_limit = 50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4768 if ( !this.iteration ) { this.iteration = 0; }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4769 this.iteration += 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4770
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4771 if ( !Timeline.loaded.core.loaded ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4772
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4773 if ( this.iteration >= iteration_limit ) { console.info('could not load Timeline core assets'); return; }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4774 setTimeout( function() { loadLocales(); }, 10 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4775 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4778
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4779 var locales_loaded = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4781 for (var l = 0; l < supportedLocales.length; l++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4783 var locale = supportedLocales[l];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4784
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4785 if (loadLocale[locale]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4786
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4787 locales_loaded.push ( locale );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4788 includeJavascriptFiles(Timeline.urlPrefix + "scripts/l10n/" + locale + "/", localizedJavascriptFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4789 includeCssFiles(Timeline.urlPrefix + "styles/l10n/" + locale + "/", localizedCssFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4791 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4792
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4793 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4794
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4795 // nb: the SimileAjax_onload function cannot acurately handle each individual locale loaded
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4796 // without further code being written. signal.js can only handle one onload event at a time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4797 SimileAjax_onLoad = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4798 Timeline.loaded.localized.loaded = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4799 Timeline.loaded.localized.locales = locales_loaded;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4800 console.info('Timeline core loaded');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4801 console.info('Timeline locales loaded: ' + Timeline.loaded.localized.locales);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4802 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4803
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4804 if (forceLocale == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4805
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4806 Timeline.serverLocale = defaultServerLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4807 Timeline.clientLocale = defaultClientLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4808
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4809 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4810
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4811 if (!tryExactLocale(forceLocale) ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4812 forceLocale = 'en';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4813 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4814
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4815 Timeline.serverLocale = forceLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4816 Timeline.clientLocale = forceLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4817 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4818
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4819 }());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4820
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4821 } catch (e) { alert(e); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4822
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4823 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4824
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4825 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4826 * Load SimileAjax if it's not already loaded
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4827 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4828 if (typeof SimileAjax == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4829 window.SimileAjax_onLoad = loadMe;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4830
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4831 var url = useLocalResources ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4832 "http://127.0.0.1:9999/ajax/api/simile-ajax-api.js?bundle=false" :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4833 "http://api.simile-widgets.org/ajax/2.2.1/simile-ajax-api.js";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4834 if (typeof Timeline_ajax_url == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4835 url = Timeline_ajax_url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4836 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4837 var createScriptElement = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4838 var script = document.createElement("script");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4839 script.type = "text/javascript";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4840 script.language = "JavaScript";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4841 script.src = url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4842 document.getElementsByTagName("head")[0].appendChild(script);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4843 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4844 if (document.body == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4845 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4846 document.write("<script src='" + url + "' type='text/javascript'></script>");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4847 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4848 createScriptElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4849 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4850 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4851 createScriptElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4852 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4853 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4854 loadMe();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4855 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4856
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4857 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4858 /*=================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4859 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4860 * Coding standards:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4861 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4862 * We aim towards Douglas Crockford's Javascript conventions.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4863 * See: http://javascript.crockford.com/code.html
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4864 * See also: http://www.crockford.com/javascript/javascript.html
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4865 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4866 * That said, this JS code was written before some recent JS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4867 * support libraries became widely used or available.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4868 * In particular, the _ character is used to indicate a class function or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4869 * variable that should be considered private to the class.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4870 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4871 * The code mostly uses accessor methods for getting/setting the private
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4872 * class variables.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4873 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4874 * Over time, we'd like to formalize the convention by using support libraries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4875 * which enforce privacy in objects.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4876 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4877 * We also want to use jslint: http://www.jslint.com/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4878 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4879 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4880 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4881 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4883
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4884
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4885 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4886 * Timeline VERSION
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4887 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4888 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4889 // Note: version is also stored in the build.xml file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4890 Timeline.version = '2.3.1'; // use format 'pre 1.2.3' for trunk versions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4891 Timeline.ajax_lib_version = SimileAjax.version; // Waiting for version string method from Ajax library
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4892 Timeline.display_version = Timeline.version + ' (with Ajax lib ' + Timeline.ajax_lib_version + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4893 // cf method Timeline.writeVersion
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4894
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4895 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4896 * Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4897 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4898 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4899 Timeline.strings = {}; // localization string tables
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4900 Timeline.HORIZONTAL = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4901 Timeline.VERTICAL = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4902 Timeline._defaultTheme = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4904 Timeline.getDefaultLocale = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4905 return Timeline.clientLocale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4906 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4907
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4908 Timeline.create = function(elmt, bandInfos, orientation, unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4909 if (Timeline.timelines == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4910 Timeline.timelines = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4911 // Timeline.timelines array can have null members--Timelines that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4912 // once existed on the page, but were later disposed of.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4913 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4915 var timelineID = Timeline.timelines.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4916 Timeline.timelines[timelineID] = null; // placeholder until we have the object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4917 var new_tl = new Timeline._Impl(elmt, bandInfos, orientation, unit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4918 timelineID);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4919 Timeline.timelines[timelineID] = new_tl;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4920 return new_tl;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4921 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4923 Timeline.createBandInfo = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4924 var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4925
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4926 var eventSource = ("eventSource" in params) ? params.eventSource : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4928 var ether = new Timeline.LinearEther({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4929 centersOn: ("date" in params) ? params.date : new Date(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4930 interval: SimileAjax.DateTime.gregorianUnitLengths[params.intervalUnit],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4931 pixelsPerInterval: params.intervalPixels,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4932 theme: theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4933 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4934
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4935 var etherPainter = new Timeline.GregorianEtherPainter({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4936 unit: params.intervalUnit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4937 multiple: ("multiple" in params) ? params.multiple : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4938 theme: theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4939 align: ("align" in params) ? params.align : undefined
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4940 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4941
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4942 var eventPainterParams = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4943 showText: ("showEventText" in params) ? params.showEventText : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4944 theme: theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4945 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4946 // pass in custom parameters for the event painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4947 if ("eventPainterParams" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4948 for (var prop in params.eventPainterParams) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4949 eventPainterParams[prop] = params.eventPainterParams[prop];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4950 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4951 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4952
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4953 if ("trackHeight" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4954 eventPainterParams.trackHeight = params.trackHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4955 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4956 if ("trackGap" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4957 eventPainterParams.trackGap = params.trackGap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4958 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4959
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4960 var layout = ("overview" in params && params.overview) ? "overview" : ("layout" in params ? params.layout : "original");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4961 var eventPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4962 if ("eventPainter" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4963 eventPainter = new params.eventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4964 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4965 switch (layout) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4966 case "overview" :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4967 eventPainter = new Timeline.OverviewEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4968 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4969 case "detailed" :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4970 eventPainter = new Timeline.DetailedEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4971 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4972 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4973 eventPainter = new Timeline.OriginalEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4974 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4975 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4976
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4977 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4978 width: params.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4979 eventSource: eventSource,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4980 timeZone: ("timeZone" in params) ? params.timeZone : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4981 ether: ether,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4982 etherPainter: etherPainter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4983 eventPainter: eventPainter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4984 theme: theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4985 zoomIndex: ("zoomIndex" in params) ? params.zoomIndex : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4986 zoomSteps: ("zoomSteps" in params) ? params.zoomSteps : null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4987 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4988 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4989
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4990 Timeline.createHotZoneBandInfo = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4991 var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4992
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4993 var eventSource = ("eventSource" in params) ? params.eventSource : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4994
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4995 var ether = new Timeline.HotZoneEther({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4996 centersOn: ("date" in params) ? params.date : new Date(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4997 interval: SimileAjax.DateTime.gregorianUnitLengths[params.intervalUnit],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4998 pixelsPerInterval: params.intervalPixels,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
4999 zones: params.zones,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5000 theme: theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5001 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5002
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5003 var etherPainter = new Timeline.HotZoneGregorianEtherPainter({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5004 unit: params.intervalUnit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5005 zones: params.zones,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5006 theme: theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5007 align: ("align" in params) ? params.align : undefined
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5008 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5010 var eventPainterParams = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5011 showText: ("showEventText" in params) ? params.showEventText : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5012 theme: theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5013 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5014 // pass in custom parameters for the event painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5015 if ("eventPainterParams" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5016 for (var prop in params.eventPainterParams) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5017 eventPainterParams[prop] = params.eventPainterParams[prop];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5018 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5019 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5020 if ("trackHeight" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5021 eventPainterParams.trackHeight = params.trackHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5022 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5023 if ("trackGap" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5024 eventPainterParams.trackGap = params.trackGap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5025 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5026
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5027 var layout = ("overview" in params && params.overview) ? "overview" : ("layout" in params ? params.layout : "original");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5028 var eventPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5029 if ("eventPainter" in params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5030 eventPainter = new params.eventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5031 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5032 switch (layout) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5033 case "overview" :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5034 eventPainter = new Timeline.OverviewEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5035 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5036 case "detailed" :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5037 eventPainter = new Timeline.DetailedEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5038 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5039 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5040 eventPainter = new Timeline.OriginalEventPainter(eventPainterParams);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5041 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5042 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5043 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5044 width: params.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5045 eventSource: eventSource,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5046 timeZone: ("timeZone" in params) ? params.timeZone : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5047 ether: ether,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5048 etherPainter: etherPainter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5049 eventPainter: eventPainter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5050 theme: theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5051 zoomIndex: ("zoomIndex" in params) ? params.zoomIndex : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5052 zoomSteps: ("zoomSteps" in params) ? params.zoomSteps : null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5053 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5054 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5055
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5056 Timeline.getDefaultTheme = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5057 if (Timeline._defaultTheme == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5058 Timeline._defaultTheme = Timeline.ClassicTheme.create(Timeline.getDefaultLocale());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5059 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5060 return Timeline._defaultTheme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5061 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5062
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5063 Timeline.setDefaultTheme = function(theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5064 Timeline._defaultTheme = theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5065 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5066
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5067 Timeline.loadXML = function(url, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5068 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5069 alert("Failed to load data xml from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5070 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5071 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5072 var xml = xmlhttp.responseXML;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5073 if (!xml.documentElement && xmlhttp.responseStream) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5074 xml.load(xmlhttp.responseStream);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5075 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5076 f(xml, url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5077 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5078 SimileAjax.XmlHttp.get(url, fError, fDone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5079 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5080
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5081
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5082 Timeline.loadJSON = function(url, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5083 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5084 alert("Failed to load json data from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5085 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5086 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5087 f(eval('(' + xmlhttp.responseText + ')'), url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5088 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5089 SimileAjax.XmlHttp.get(url, fError, fDone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5090 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5091
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5092 Timeline.getTimelineFromID = function(timelineID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5093 return Timeline.timelines[timelineID];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5094 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5096 // Write the current Timeline version as the contents of element with id el_id
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5097 Timeline.writeVersion = function(el_id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5098 document.getElementById(el_id).innerHTML = this.display_version;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5099 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5100
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5101
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5102
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5103 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5104 * Timeline Implementation object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5105 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5106 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5107 Timeline._Impl = function(elmt, bandInfos, orientation, unit, timelineID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5108 SimileAjax.WindowManager.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5109
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5110 this._containerDiv = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5112 this._bandInfos = bandInfos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5113 this._orientation = orientation == null ? Timeline.HORIZONTAL : orientation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5114 this._unit = (unit != null) ? unit : SimileAjax.NativeDateUnit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5115 this._starting = true; // is the Timeline being created? Used by autoWidth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5116 // functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5117 this._autoResizing = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5118
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5119 // autoWidth is a "public" property of the Timeline object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5120 this.autoWidth = bandInfos && bandInfos[0] && bandInfos[0].theme &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5121 bandInfos[0].theme.autoWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5122 this.autoWidthAnimationTime = bandInfos && bandInfos[0] && bandInfos[0].theme &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5123 bandInfos[0].theme.autoWidthAnimationTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5124 this.timelineID = timelineID; // also public attribute
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5125 this.timeline_start = bandInfos && bandInfos[0] && bandInfos[0].theme &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5126 bandInfos[0].theme.timeline_start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5127 this.timeline_stop = bandInfos && bandInfos[0] && bandInfos[0].theme &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5128 bandInfos[0].theme.timeline_stop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5129 this.timeline_at_start = false; // already at start or stop? Then won't
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5130 this.timeline_at_stop = false; // try to move further in the wrong direction
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5131
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5132 this._initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5133 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5134
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5135 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5136 // Public functions used by client sw
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5137 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5138 Timeline._Impl.prototype.dispose = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5139 for (var i = 0; i < this._bands.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5140 this._bands[i].dispose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5141 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5142 this._bands = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5143 this._bandInfos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5144 this._containerDiv.innerHTML = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5145 // remove from array of Timelines
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5146 Timeline.timelines[this.timelineID] = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5147 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5148
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5149 Timeline._Impl.prototype.getBandCount = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5150 return this._bands.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5151 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5152
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5153 Timeline._Impl.prototype.getBand = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5154 return this._bands[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5155 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5156
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5157 Timeline._Impl.prototype.finishedEventLoading = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5158 // Called by client after events have been loaded into Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5159 // Only used if the client has set autoWidth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5160 // Sets width to Timeline's requested amount and will shrink down the div if
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5161 // need be.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5162 this._autoWidthCheck(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5163 this._starting = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5164 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5165
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5166 Timeline._Impl.prototype.layout = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5167 // called by client when browser is resized
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5168 this._autoWidthCheck(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5169 this._distributeWidths();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5170 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5171
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5172 Timeline._Impl.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5173 for (var i = 0; i < this._bands.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5174 this._bands[i].paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5175 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5176 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5177
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5178 Timeline._Impl.prototype.getDocument = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5179 return this._containerDiv.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5180 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5181
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5182 Timeline._Impl.prototype.addDiv = function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5183 this._containerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5184 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5185
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5186 Timeline._Impl.prototype.removeDiv = function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5187 this._containerDiv.removeChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5188 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5189
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5190 Timeline._Impl.prototype.isHorizontal = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5191 return this._orientation == Timeline.HORIZONTAL;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5192 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5193
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5194 Timeline._Impl.prototype.isVertical = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5195 return this._orientation == Timeline.VERTICAL;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5196 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5197
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5198 Timeline._Impl.prototype.getPixelLength = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5199 return this._orientation == Timeline.HORIZONTAL ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5200 this._containerDiv.offsetWidth : this._containerDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5201 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5202
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5203 Timeline._Impl.prototype.getPixelWidth = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5204 return this._orientation == Timeline.VERTICAL ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5205 this._containerDiv.offsetWidth : this._containerDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5206 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5207
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5208 Timeline._Impl.prototype.getUnit = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5209 return this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5210 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5211
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5212 Timeline._Impl.prototype.getWidthStyle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5213 // which element.style attribute should be changed to affect Timeline's "width"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5214 return this._orientation == Timeline.HORIZONTAL ? 'height' : 'width';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5215 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5216
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5217 Timeline._Impl.prototype.loadXML = function(url, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5218 var tl = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5219
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5220
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5221 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5222 alert("Failed to load data xml from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5223 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5224 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5225 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5226 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5227 var xml = xmlhttp.responseXML;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5228 if (!xml.documentElement && xmlhttp.responseStream) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5229 xml.load(xmlhttp.responseStream);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5230 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5231 f(xml, url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5232 } finally {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5233 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5234 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5235 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5236
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5237 this.showLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5238 window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5239 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5240
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5241 Timeline._Impl.prototype.loadJSON = function(url, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5242 var tl = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5244 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5245 alert("Failed to load json data from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5246 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5247 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5248 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5249 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5250 f(eval('(' + xmlhttp.responseText + ')'), url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5251 } finally {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5252 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5253 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5254 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5255
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5256 this.showLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5257 window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5258 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5259
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5260
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5261 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5262 // Private functions used by Timeline object functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5263 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5264
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5265 Timeline._Impl.prototype._autoWidthScrollListener = function(band) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5266 band.getTimeline()._autoWidthCheck(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5267 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5268
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5269 // called to re-calculate auto width and adjust the overall Timeline div if needed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5270 Timeline._Impl.prototype._autoWidthCheck = function(okToShrink) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5271 var timeline = this; // this Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5272 var immediateChange = timeline._starting;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5273 var newWidth = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5274
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5275 function changeTimelineWidth() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5276 var widthStyle = timeline.getWidthStyle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5277 if (immediateChange) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5278 timeline._containerDiv.style[widthStyle] = newWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5279 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5280 // animate change
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5281 timeline._autoResizing = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5282 var animateParam ={};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5283 animateParam[widthStyle] = newWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5285 SimileAjax.jQuery(timeline._containerDiv).animate(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5286 animateParam, timeline.autoWidthAnimationTime,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5287 'linear', function(){timeline._autoResizing = false;});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5288 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5289 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5290
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5291 function checkTimelineWidth() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5292 var targetWidth = 0; // the new desired width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5293 var currentWidth = timeline.getPixelWidth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5294
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5295 if (timeline._autoResizing) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5296 return; // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5297 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5298
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5299 // compute targetWidth
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5300 for (var i = 0; i < timeline._bands.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5301 timeline._bands[i].checkAutoWidth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5302 targetWidth += timeline._bandInfos[i].width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5303 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5304
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5305 if (targetWidth > currentWidth || okToShrink) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5306 // yes, let's change the size
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5307 newWidth = targetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5308 changeTimelineWidth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5309 timeline._distributeWidths();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5310 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5312
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5313 // function's mainline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5314 if (!timeline.autoWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5315 return; // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5316 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5317
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5318 checkTimelineWidth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5319 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5320
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5321 Timeline._Impl.prototype._initialize = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5322 var containerDiv = this._containerDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5323 var doc = containerDiv.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5324
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5325 containerDiv.className =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5326 containerDiv.className.split(" ").concat("timeline-container").join(" ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5327
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5328 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5329 * Set css-class on container div that will define orientation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5330 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5331 var orientation = (this.isHorizontal()) ? 'horizontal' : 'vertical'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5332 containerDiv.className +=' timeline-'+orientation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5333
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5335 while (containerDiv.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5336 containerDiv.removeChild(containerDiv.firstChild);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5337 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5338
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5339 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5340 * inserting copyright and link to simile
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5341 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5342 var elmtCopyright = SimileAjax.Graphics.createTranslucentImage(Timeline.urlPrefix + (this.isHorizontal() ? "images/copyright-vertical.png" : "images/copyright.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5343 elmtCopyright.className = "timeline-copyright";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5344 elmtCopyright.title = "Timeline copyright SIMILE - www.code.google.com/p/simile-widgets/";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5345 SimileAjax.DOM.registerEvent(elmtCopyright, "click", function() { window.location = "http://code.google.com/p/simile-widgets/"; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5346 containerDiv.appendChild(elmtCopyright);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5347
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5348 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5349 * creating bands
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5350 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5351 this._bands = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5352 for (var i = 0; i < this._bandInfos.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5353 var band = new Timeline._Band(this, this._bandInfos[i], i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5354 this._bands.push(band);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5355 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5356 this._distributeWidths();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5357
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5358 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5359 * sync'ing bands
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5360 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5361 for (var i = 0; i < this._bandInfos.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5362 var bandInfo = this._bandInfos[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5363 if ("syncWith" in bandInfo) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5364 this._bands[i].setSyncWithBand(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5365 this._bands[bandInfo.syncWith],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5366 ("highlight" in bandInfo) ? bandInfo.highlight : false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5367 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5368 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5369 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5370
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5371
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5372 if (this.autoWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5373 for (var i = 0; i < this._bands.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5374 this._bands[i].addOnScrollListener(this._autoWidthScrollListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5375 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5376 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5377
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5379 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5380 * creating loading UI
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5381 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5382 var message = SimileAjax.Graphics.createMessageBubble(doc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5383 message.containerDiv.className = "timeline-message-container";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5384 containerDiv.appendChild(message.containerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5386 message.contentDiv.className = "timeline-message";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5387 message.contentDiv.innerHTML = "<img src='" + Timeline.urlPrefix + "images/progress-running.gif' /> Loading...";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5388
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5389 this.showLoadingMessage = function() { message.containerDiv.style.display = "block"; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5390 this.hideLoadingMessage = function() { message.containerDiv.style.display = "none"; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5391 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5392
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5393 Timeline._Impl.prototype._distributeWidths = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5394 var length = this.getPixelLength();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5395 var width = this.getPixelWidth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5396 var cumulativeWidth = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5397
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5398 for (var i = 0; i < this._bands.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5399 var band = this._bands[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5400 var bandInfos = this._bandInfos[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5401 var widthString = bandInfos.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5402 var bandWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5403
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5404 if (typeof widthString == 'string') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5405 var x = widthString.indexOf("%");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5406 if (x > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5407 var percent = parseInt(widthString.substr(0, x));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5408 bandWidth = Math.round(percent * width / 100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5409 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5410 bandWidth = parseInt(widthString);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5411 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5412 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5413 // was given an integer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5414 bandWidth = widthString;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5415 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5416
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5417 band.setBandShiftAndWidth(cumulativeWidth, bandWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5418 band.setViewLength(length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5419
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5420 cumulativeWidth += bandWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5421 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5422 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5423
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5424 Timeline._Impl.prototype.shiftOK = function(index, shift) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5425 // Returns true if the proposed shift is ok
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5426 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5427 // Positive shift means going back in time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5428 var going_back = shift > 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5429 going_forward = shift < 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5430
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5431 // Is there an edge?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5432 if ((going_back && this.timeline_start == null) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5433 (going_forward && this.timeline_stop == null) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5434 (shift == 0)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5435 return (true); // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5436 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5437
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5438 // If any of the bands has noted that it is changing the others,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5439 // then this shift is a secondary shift in reaction to the real shift,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5440 // which already happened. In such cases, ignore it. (The issue is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5441 // that a positive original shift can cause a negative secondary shift,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5442 // as the bands adjust.)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5443 var secondary_shift = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5444 for (var i = 0; i < this._bands.length && !secondary_shift; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5445 secondary_shift = this._bands[i].busy();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5446 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5447 if (secondary_shift) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5448 return(true); // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5449 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5450
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5451 // If we are already at an edge, then don't even think about going any further
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5452 if ((going_back && this.timeline_at_start) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5453 (going_forward && this.timeline_at_stop)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5454 return (false); // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5455 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5457 // Need to check all the bands
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5458 var ok = false; // return value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5459 // If any of the bands will be or are showing an ok date, then let the shift proceed.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5460 for (var i = 0; i < this._bands.length && !ok; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5461 var band = this._bands[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5462 if (going_back) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5463 ok = (i == index ? band.getMinVisibleDateAfterDelta(shift) : band.getMinVisibleDate())
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5464 >= this.timeline_start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5465 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5466 ok = (i == index ? band.getMaxVisibleDateAfterDelta(shift) : band.getMaxVisibleDate())
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5467 <= this.timeline_stop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5468 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5469 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5470
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5471 // process results
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5472 if (going_back) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5473 this.timeline_at_start = !ok;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5474 this.timeline_at_stop = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5475 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5476 this.timeline_at_stop = !ok;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5477 this.timeline_at_start = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5478 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5479 // This is where you could have an effect once per hitting an
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5480 // edge of the Timeline. Eg jitter the Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5481 //if (!ok) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5482 //alert(going_back ? "At beginning" : "At end");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5483 //}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5484 return (ok);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5485 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5486
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5487 Timeline._Impl.prototype.zoom = function (zoomIn, x, y, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5488 var matcher = new RegExp("^timeline-band-([0-9]+)$");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5489 var bandIndex = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5490
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5491 var result = matcher.exec(target.id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5492 if (result) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5493 bandIndex = parseInt(result[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5494 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5495
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5496 if (bandIndex != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5497 this._bands[bandIndex].zoom(zoomIn, x, y, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5498 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5499
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5500 this.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5501 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5502
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5503 /*=================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5504 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5505 * Coding standards:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5506 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5507 * We aim towards Douglas Crockford's Javascript conventions.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5508 * See: http://javascript.crockford.com/code.html
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5509 * See also: http://www.crockford.com/javascript/javascript.html
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5510 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5511 * That said, this JS code was written before some recent JS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5512 * support libraries became widely used or available.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5513 * In particular, the _ character is used to indicate a class function or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5514 * variable that should be considered private to the class.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5515 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5516 * The code mostly uses accessor methods for getting/setting the private
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5517 * class variables.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5518 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5519 * Over time, we'd like to formalize the convention by using support libraries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5520 * which enforce privacy in objects.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5521 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5522 * We also want to use jslint: http://www.jslint.com/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5523 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5524 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5525 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5526 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5527
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5528
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5529
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5530 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5531 * Band
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5532 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5533 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5534 Timeline._Band = function(timeline, bandInfo, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5535 // Set up the band's object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5536
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5537 // Munge params: If autoWidth is on for the Timeline, then ensure that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5538 // bandInfo.width is an integer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5539 if (timeline.autoWidth && typeof bandInfo.width == 'string') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5540 bandInfo.width = bandInfo.width.indexOf("%") > -1 ? 0 : parseInt(bandInfo.width);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5541 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5542
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5543 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5544 this._bandInfo = bandInfo;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5545
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5546 this._index = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5548 this._locale = ("locale" in bandInfo) ? bandInfo.locale : Timeline.getDefaultLocale();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5549 this._timeZone = ("timeZone" in bandInfo) ? bandInfo.timeZone : 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5550 this._labeller = ("labeller" in bandInfo) ? bandInfo.labeller :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5551 (("createLabeller" in timeline.getUnit()) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5552 timeline.getUnit().createLabeller(this._locale, this._timeZone) :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5553 new Timeline.GregorianDateLabeller(this._locale, this._timeZone));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5554 this._theme = bandInfo.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5555 this._zoomIndex = ("zoomIndex" in bandInfo) ? bandInfo.zoomIndex : 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5556 this._zoomSteps = ("zoomSteps" in bandInfo) ? bandInfo.zoomSteps : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5557
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5558 this._dragging = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5559 this._changing = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5560 this._originalScrollSpeed = 5; // pixels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5561 this._scrollSpeed = this._originalScrollSpeed;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5562 this._onScrollListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5563
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5564 var b = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5565 this._syncWithBand = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5566 this._syncWithBandHandler = function(band) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5567 b._onHighlightBandScroll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5568 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5569 this._selectorListener = function(band) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5570 b._onHighlightBandScroll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5571 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5572
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5573 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5574 * Install a textbox to capture keyboard events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5575 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5576 var inputDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5577 inputDiv.className = "timeline-band-input";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5578 this._timeline.addDiv(inputDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5579
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5580 this._keyboardInput = document.createElement("input");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5581 this._keyboardInput.type = "text";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5582 inputDiv.appendChild(this._keyboardInput);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5583 SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keydown", this, "_onKeyDown");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5584 SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keyup", this, "_onKeyUp");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5586 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5587 * The band's outer most div that slides with respect to the timeline's div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5588 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5589 this._div = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5590 this._div.id = "timeline-band-" + index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5591 this._div.className = "timeline-band timeline-band-" + index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5592 this._timeline.addDiv(this._div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5594 SimileAjax.DOM.registerEventWithObject(this._div, "mousedown", this, "_onMouseDown");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5595 SimileAjax.DOM.registerEventWithObject(this._div, "mousemove", this, "_onMouseMove");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5596 SimileAjax.DOM.registerEventWithObject(this._div, "mouseup", this, "_onMouseUp");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5597 SimileAjax.DOM.registerEventWithObject(this._div, "mouseout", this, "_onMouseOut");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5598 SimileAjax.DOM.registerEventWithObject(this._div, "dblclick", this, "_onDblClick");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5599
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5600 var mouseWheel = this._theme!= null ? this._theme.mouseWheel : 'scroll'; // theme is not always defined
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5601 if (mouseWheel === 'zoom' || mouseWheel === 'scroll' || this._zoomSteps) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5602 // capture mouse scroll
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5603 if (SimileAjax.Platform.browser.isFirefox) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5604 SimileAjax.DOM.registerEventWithObject(this._div, "DOMMouseScroll", this, "_onMouseScroll");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5605 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5606 SimileAjax.DOM.registerEventWithObject(this._div, "mousewheel", this, "_onMouseScroll");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5607 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5608 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5609
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5610 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5611 * The inner div that contains layers
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5612 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5613 this._innerDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5614 this._innerDiv.className = "timeline-band-inner";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5615 this._div.appendChild(this._innerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5616
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5617 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5618 * Initialize parts of the band
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5619 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5620 this._ether = bandInfo.ether;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5621 bandInfo.ether.initialize(this, timeline);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5623 this._etherPainter = bandInfo.etherPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5624 bandInfo.etherPainter.initialize(this, timeline);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5626 this._eventSource = bandInfo.eventSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5627 if (this._eventSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5628 this._eventListener = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5629 onAddMany: function() { b._onAddMany(); },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5630 onClear: function() { b._onClear(); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5631 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5632 this._eventSource.addListener(this._eventListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5633 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5635 this._eventPainter = bandInfo.eventPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5636 this._eventTracksNeeded = 0; // set by painter via updateEventTrackInfo
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5637 this._eventTrackIncrement = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5638 bandInfo.eventPainter.initialize(this, timeline);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5639
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5640 this._decorators = ("decorators" in bandInfo) ? bandInfo.decorators : [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5641 for (var i = 0; i < this._decorators.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5642 this._decorators[i].initialize(this, timeline);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5643 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5644 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5645
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5646 Timeline._Band.SCROLL_MULTIPLES = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5647
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5648 Timeline._Band.prototype.dispose = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5649 this.closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5651 if (this._eventSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5652 this._eventSource.removeListener(this._eventListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5653 this._eventListener = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5654 this._eventSource = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5655 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5656
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5657 this._timeline = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5658 this._bandInfo = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5659
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5660 this._labeller = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5661 this._ether = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5662 this._etherPainter = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5663 this._eventPainter = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5664 this._decorators = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5665
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5666 this._onScrollListeners = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5667 this._syncWithBandHandler = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5668 this._selectorListener = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5669
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5670 this._div = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5671 this._innerDiv = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5672 this._keyboardInput = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5673 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5674
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5675 Timeline._Band.prototype.addOnScrollListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5676 this._onScrollListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5677 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5678
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5679 Timeline._Band.prototype.removeOnScrollListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5680 for (var i = 0; i < this._onScrollListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5681 if (this._onScrollListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5682 this._onScrollListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5683 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5686 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5687
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5688 Timeline._Band.prototype.setSyncWithBand = function(band, highlight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5689 if (this._syncWithBand) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5690 this._syncWithBand.removeOnScrollListener(this._syncWithBandHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5691 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5692
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5693 this._syncWithBand = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5694 this._syncWithBand.addOnScrollListener(this._syncWithBandHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5695 this._highlight = highlight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5696 this._positionHighlight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5697 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5699 Timeline._Band.prototype.getLocale = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5700 return this._locale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5701 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5702
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5703 Timeline._Band.prototype.getTimeZone = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5704 return this._timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5705 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5706
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5707 Timeline._Band.prototype.getLabeller = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5708 return this._labeller;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5709 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5710
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5711 Timeline._Band.prototype.getIndex = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5712 return this._index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5713 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5714
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5715 Timeline._Band.prototype.getEther = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5716 return this._ether;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5717 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5719 Timeline._Band.prototype.getEtherPainter = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5720 return this._etherPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5721 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5722
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5723 Timeline._Band.prototype.getEventSource = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5724 return this._eventSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5725 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5726
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5727 Timeline._Band.prototype.getEventPainter = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5728 return this._eventPainter;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5729 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5730
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5731 Timeline._Band.prototype.getTimeline = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5732 return this._timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5733 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5734
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5735 // Autowidth support
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5736 Timeline._Band.prototype.updateEventTrackInfo = function(tracks, increment) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5737 this._eventTrackIncrement = increment; // doesn't vary for a specific band
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5738
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5739 if (tracks > this._eventTracksNeeded) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5740 this._eventTracksNeeded = tracks;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5742 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5743
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5744 // Autowidth support
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5745 Timeline._Band.prototype.checkAutoWidth = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5746 // if a new (larger) width is needed by the band
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5747 // then: a) updates the band's bandInfo.width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5748 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5749 // desiredWidth for the band is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5750 // (number of tracks + margin) * track increment
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5751 if (! this._timeline.autoWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5752 return; // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5753 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5754
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5755 var overviewBand = this._eventPainter.getType() == 'overview';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5756 var margin = overviewBand ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5757 this._theme.event.overviewTrack.autoWidthMargin :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5758 this._theme.event.track.autoWidthMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5759 var desiredWidth = Math.ceil((this._eventTracksNeeded + margin) *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5760 this._eventTrackIncrement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5761 // add offset amount (additional margin)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5762 desiredWidth += overviewBand ? this._theme.event.overviewTrack.offset :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5763 this._theme.event.track.offset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5764 var bandInfo = this._bandInfo;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5765
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5766 if (desiredWidth != bandInfo.width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5767 bandInfo.width = desiredWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5768 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5769 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5770
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5771 Timeline._Band.prototype.layout = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5772 this.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5773 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5774
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5775 Timeline._Band.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5776 this._etherPainter.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5777 this._paintDecorators();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5778 this._paintEvents();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5779 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5781 Timeline._Band.prototype.softLayout = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5782 this.softPaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5783 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5784
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5785 Timeline._Band.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5786 this._etherPainter.softPaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5787 this._softPaintDecorators();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5788 this._softPaintEvents();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5789 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5791 Timeline._Band.prototype.setBandShiftAndWidth = function(shift, width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5792 var inputDiv = this._keyboardInput.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5793 var middle = shift + Math.floor(width / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5794 if (this._timeline.isHorizontal()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5795 this._div.style.top = shift + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5796 this._div.style.height = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5797
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5798 inputDiv.style.top = middle + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5799 inputDiv.style.left = "-1em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5800 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5801 this._div.style.left = shift + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5802 this._div.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5803
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5804 inputDiv.style.left = middle + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5805 inputDiv.style.top = "-1em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5806 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5807 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5808
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5809 Timeline._Band.prototype.getViewWidth = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5810 if (this._timeline.isHorizontal()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5811 return this._div.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5812 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5813 return this._div.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5814 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5815 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5816
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5817 Timeline._Band.prototype.setViewLength = function(length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5818 this._viewLength = length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5819 this._recenterDiv();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5820 this._onChanging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5821 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5822
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5823 Timeline._Band.prototype.getViewLength = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5824 return this._viewLength;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5825 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5827 Timeline._Band.prototype.getTotalViewLength = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5828 return Timeline._Band.SCROLL_MULTIPLES * this._viewLength;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5829 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5830
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5831 Timeline._Band.prototype.getViewOffset = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5832 return this._viewOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5833 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5834
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5835 Timeline._Band.prototype.getMinDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5836 return this._ether.pixelOffsetToDate(this._viewOffset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5837 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5838
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5839 Timeline._Band.prototype.getMaxDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5840 return this._ether.pixelOffsetToDate(this._viewOffset + Timeline._Band.SCROLL_MULTIPLES * this._viewLength);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5841 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5842
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5843 Timeline._Band.prototype.getMinVisibleDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5844 return this._ether.pixelOffsetToDate(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5845 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5846
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5847 Timeline._Band.prototype.getMinVisibleDateAfterDelta = function(delta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5848 return this._ether.pixelOffsetToDate(delta);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5849 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5850
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5851 Timeline._Band.prototype.getMaxVisibleDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5852 // Max date currently visible on band
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5853 return this._ether.pixelOffsetToDate(this._viewLength);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5854 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5855
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5856 Timeline._Band.prototype.getMaxVisibleDateAfterDelta = function(delta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5857 // Max date visible on band after delta px view change is applied
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5858 return this._ether.pixelOffsetToDate(this._viewLength + delta);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5859 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5860
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5861 Timeline._Band.prototype.getCenterVisibleDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5862 return this._ether.pixelOffsetToDate(this._viewLength / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5863 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5864
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5865 Timeline._Band.prototype.setMinVisibleDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5866 if (!this._changing) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5867 this._moveEther(Math.round(-this._ether.dateToPixelOffset(date)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5868 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5869 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5870
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5871 Timeline._Band.prototype.setMaxVisibleDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5872 if (!this._changing) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5873 this._moveEther(Math.round(this._viewLength - this._ether.dateToPixelOffset(date)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5874 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5875 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5876
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5877 Timeline._Band.prototype.setCenterVisibleDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5878 if (!this._changing) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5879 this._moveEther(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(date)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5880 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5881 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5883 Timeline._Band.prototype.dateToPixelOffset = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5884 return this._ether.dateToPixelOffset(date) - this._viewOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5885 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5886
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5887 Timeline._Band.prototype.pixelOffsetToDate = function(pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5888 return this._ether.pixelOffsetToDate(pixels + this._viewOffset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5889 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5890
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5891 Timeline._Band.prototype.createLayerDiv = function(zIndex, className) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5892 var div = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5893 div.className = "timeline-band-layer" + (typeof className == "string" ? (" " + className) : "");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5894 div.style.zIndex = zIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5895 this._innerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5896
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5897 var innerDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5898 innerDiv.className = "timeline-band-layer-inner";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5899 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5900 innerDiv.style.cursor = "move";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5901 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5902 innerDiv.style.cursor = "-moz-grab";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5903 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5904 div.appendChild(innerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5906 return innerDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5907 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5908
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5909 Timeline._Band.prototype.removeLayerDiv = function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5910 this._innerDiv.removeChild(div.parentNode);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5911 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5912
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5913 Timeline._Band.prototype.scrollToCenter = function(date, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5914 var pixelOffset = this._ether.dateToPixelOffset(date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5915 if (pixelOffset < -this._viewLength / 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5916 this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset + this._viewLength));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5917 } else if (pixelOffset > 3 * this._viewLength / 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5918 this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset - this._viewLength));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5919 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5920 this._autoScroll(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(date)), f);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5921 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5923 Timeline._Band.prototype.showBubbleForEvent = function(eventID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5924 var evt = this.getEventSource().getEvent(eventID);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5925 if (evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5926 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5927 this.scrollToCenter(evt.getStart(), function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5928 self._eventPainter.showBubble(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5929 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5930 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5931 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5932
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5933 Timeline._Band.prototype.zoom = function(zoomIn, x, y, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5934 if (!this._zoomSteps) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5935 // zoom disabled
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5936 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5937 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5938
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5939 // shift the x value by our offset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5940 x += this._viewOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5941
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5942 var zoomDate = this._ether.pixelOffsetToDate(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5943 var netIntervalChange = this._ether.zoom(zoomIn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5944 this._etherPainter.zoom(netIntervalChange);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5946 // shift our zoom date to the far left
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5947 this._moveEther(Math.round(-this._ether.dateToPixelOffset(zoomDate)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5948 // then shift it back to where the mouse was
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5949 this._moveEther(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5950 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5951
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5952 Timeline._Band.prototype._onMouseDown = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5953 this.closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5954
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5955 this._dragging = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5956 this._dragX = evt.clientX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5957 this._dragY = evt.clientY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5958 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5959
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5960 Timeline._Band.prototype._onMouseMove = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5961 if (this._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5962 var diffX = evt.clientX - this._dragX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5963 var diffY = evt.clientY - this._dragY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5964
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5965 this._dragX = evt.clientX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5966 this._dragY = evt.clientY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5967
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5968 this._moveEther(this._timeline.isHorizontal() ? diffX : diffY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5969 this._positionHighlight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5970 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5971 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5972
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5973 Timeline._Band.prototype._onMouseUp = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5974 this._dragging = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5975 this._keyboardInput.focus();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5976 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5977
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5978 Timeline._Band.prototype._onMouseOut = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5979 var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5980 coords.x += this._viewOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5981 if (coords.x < 0 || coords.x > innerFrame.offsetWidth ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5982 coords.y < 0 || coords.y > innerFrame.offsetHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5983 this._dragging = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5984 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5985 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5986
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5987 Timeline._Band.prototype._onMouseScroll = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5988 var now = new Date();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5989 now = now.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5990
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5991 if (!this._lastScrollTime || ((now - this._lastScrollTime) > 50)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5992 // limit 1 scroll per 200ms due to FF3 sending multiple events back to back
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5993 this._lastScrollTime = now;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5994
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5995 var delta = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5996 if (evt.wheelDelta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5997 delta = evt.wheelDelta/120;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5998 } else if (evt.detail) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
5999 delta = -evt.detail/3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6000 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6002 // either scroll or zoom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6003 var mouseWheel = this._theme.mouseWheel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6004
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6005 if (this._zoomSteps || mouseWheel === 'zoom') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6006 var loc = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6007 if (delta != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6008 var zoomIn;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6009 if (delta > 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6010 zoomIn = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6011 if (delta < 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6012 zoomIn = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6013 // call zoom on the timeline so we could zoom multiple bands if desired
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6014 this._timeline.zoom(zoomIn, loc.x, loc.y, innerFrame);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6015 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6016 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6017 else if (mouseWheel === 'scroll') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6018 var move_amt = 50 * (delta < 0 ? -1 : 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6019 this._moveEther(move_amt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6020 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6021 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6022
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6023 // prevent bubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6024 if (evt.stopPropagation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6025 evt.stopPropagation();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6026 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6027 evt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6028
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6029 // prevent the default action
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6030 if (evt.preventDefault) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6031 evt.preventDefault();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6032 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6033 evt.returnValue = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6034 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6035
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6036 Timeline._Band.prototype._onDblClick = function(innerFrame, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6037 var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt, innerFrame);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6038 var distance = coords.x - (this._viewLength / 2 - this._viewOffset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6039
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6040 this._autoScroll(-distance);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6041 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6042
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6043 Timeline._Band.prototype._onKeyDown = function(keyboardInput, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6044 if (!this._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6045 switch (evt.keyCode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6046 case 27: // ESC
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6047 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6048 case 37: // left arrow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6049 case 38: // up arrow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6050 this._scrollSpeed = Math.min(50, Math.abs(this._scrollSpeed * 1.05));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6051 this._moveEther(this._scrollSpeed);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6052 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6053 case 39: // right arrow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6054 case 40: // down arrow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6055 this._scrollSpeed = -Math.min(50, Math.abs(this._scrollSpeed * 1.05));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6056 this._moveEther(this._scrollSpeed);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6057 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6058 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6059 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6060 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6061 this.closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6062
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6063 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6064 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6065 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6066 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6067 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6068
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6069 Timeline._Band.prototype._onKeyUp = function(keyboardInput, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6070 if (!this._dragging) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6071 this._scrollSpeed = this._originalScrollSpeed;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6072
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6073 switch (evt.keyCode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6074 case 35: // end
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6075 this.setCenterVisibleDate(this._eventSource.getLatestDate());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6076 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6077 case 36: // home
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6078 this.setCenterVisibleDate(this._eventSource.getEarliestDate());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6079 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6080 case 33: // page up
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6081 this._autoScroll(this._timeline.getPixelLength());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6082 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6083 case 34: // page down
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6084 this._autoScroll(-this._timeline.getPixelLength());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6085 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6086 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6087 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6088 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6089
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6090 this.closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6091
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6092 SimileAjax.DOM.cancelEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6093 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6094 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6095 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6096 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6097
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6098 Timeline._Band.prototype._autoScroll = function(distance, f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6099 var b = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6100 var a = SimileAjax.Graphics.createAnimation(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6101 function(abs, diff) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6102 b._moveEther(diff);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6103 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6104 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6105 distance,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6106 1000,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6107 f
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6108 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6109 a.run();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6110 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6112 Timeline._Band.prototype._moveEther = function(shift) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6113 this.closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6114
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6115 // A positive shift means back in time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6116 // Check that we're not moving beyond Timeline's limits
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6117 if (!this._timeline.shiftOK(this._index, shift)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6118 return; // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6120
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6121 this._viewOffset += shift;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6122 this._ether.shiftPixels(-shift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6123 if (this._timeline.isHorizontal()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6124 this._div.style.left = this._viewOffset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6125 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6126 this._div.style.top = this._viewOffset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6127 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6128
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6129 if (this._viewOffset > -this._viewLength * 0.5 ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6130 this._viewOffset < -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1.5)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6131
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6132 this._recenterDiv();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6133 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6134 this.softLayout();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6135 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6136
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6137 this._onChanging();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6138 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6139
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6140 Timeline._Band.prototype._onChanging = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6141 this._changing = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6142
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6143 this._fireOnScroll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6144 this._setSyncWithBandDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6145
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6146 this._changing = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6147 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6148
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6149 Timeline._Band.prototype.busy = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6150 // Is this band busy changing other bands?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6151 return(this._changing);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6152 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6153
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6154 Timeline._Band.prototype._fireOnScroll = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6155 for (var i = 0; i < this._onScrollListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6156 this._onScrollListeners[i](this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6157 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6158 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6159
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6160 Timeline._Band.prototype._setSyncWithBandDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6161 if (this._syncWithBand) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6162 var centerDate = this._ether.pixelOffsetToDate(this.getViewLength() / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6163 this._syncWithBand.setCenterVisibleDate(centerDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6164 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6165 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6166
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6167 Timeline._Band.prototype._onHighlightBandScroll = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6168 if (this._syncWithBand) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6169 var centerDate = this._syncWithBand.getCenterVisibleDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6170 var centerPixelOffset = this._ether.dateToPixelOffset(centerDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6171
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6172 this._moveEther(Math.round(this._viewLength / 2 - centerPixelOffset));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6173
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6174 if (this._highlight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6175 this._etherPainter.setHighlight(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6176 this._syncWithBand.getMinVisibleDate(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6177 this._syncWithBand.getMaxVisibleDate());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6178 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6179 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6180 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6181
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6182 Timeline._Band.prototype._onAddMany = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6183 this._paintEvents();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6184 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6185
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6186 Timeline._Band.prototype._onClear = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6187 this._paintEvents();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6188 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6189
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6190 Timeline._Band.prototype._positionHighlight = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6191 if (this._syncWithBand) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6192 var startDate = this._syncWithBand.getMinVisibleDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6193 var endDate = this._syncWithBand.getMaxVisibleDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6194
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6195 if (this._highlight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6196 this._etherPainter.setHighlight(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6197 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6198 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6199 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6200
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6201 Timeline._Band.prototype._recenterDiv = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6202 this._viewOffset = -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6203 if (this._timeline.isHorizontal()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6204 this._div.style.left = this._viewOffset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6205 this._div.style.width = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6206 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6207 this._div.style.top = this._viewOffset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6208 this._div.style.height = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6209 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6210 this.layout();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6211 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6212
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6213 Timeline._Band.prototype._paintEvents = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6214 this._eventPainter.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6215 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6216
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6217 Timeline._Band.prototype._softPaintEvents = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6218 this._eventPainter.softPaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6219 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6220
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6221 Timeline._Band.prototype._paintDecorators = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6222 for (var i = 0; i < this._decorators.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6223 this._decorators[i].paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6224 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6225 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6226
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6227 Timeline._Band.prototype._softPaintDecorators = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6228 for (var i = 0; i < this._decorators.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6229 this._decorators[i].softPaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6230 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6231 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6232
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6233 Timeline._Band.prototype.closeBubble = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6234 SimileAjax.WindowManager.cancelPopups();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6235 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6236 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6237 * Classic Theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6238 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6239 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6240
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6241
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6242
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6243 Timeline.ClassicTheme = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6244
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6245 Timeline.ClassicTheme.implementations = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6246
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6247 Timeline.ClassicTheme.create = function(locale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6248 if (locale == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6249 locale = Timeline.getDefaultLocale();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6250 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6251
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6252 var f = Timeline.ClassicTheme.implementations[locale];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6253 if (f == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6254 f = Timeline.ClassicTheme._Impl;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6255 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6256 return new f();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6257 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6258
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6259 Timeline.ClassicTheme._Impl = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6260 this.firstDayOfWeek = 0; // Sunday
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6261
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6262 // Note: Many styles previously set here are now set using CSS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6263 // The comments indicate settings controlled by CSS, not
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6264 // lines to be un-commented.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6265 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6266 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6267 // Attributes autoWidth, autoWidthAnimationTime, timeline_start
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6268 // and timeline_stop must be set on the first band's theme.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6269 // The other attributes can be set differently for each
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6270 // band by using different themes for the bands.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6271 this.autoWidth = false; // Should the Timeline automatically grow itself, as
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6272 // needed when too many events for the available width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6273 // are painted on the visible part of the Timeline?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6274 this.autoWidthAnimationTime = 500; // mSec
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6275 this.timeline_start = null; // Setting a date, eg new Date(Date.UTC(2008,0,17,20,00,00,0)) will prevent the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6276 // Timeline from being moved to anytime before the date.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6277 this.timeline_stop = null; // Use for setting a maximum date. The Timeline will not be able
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6278 // to be moved to anytime after this date.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6279 this.ether = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6280 backgroundColors: [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6281 // "#EEE",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6282 // "#DDD",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6283 // "#CCC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6284 // "#AAA"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6285 ],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6286 // highlightColor: "white",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6287 highlightOpacity: 50,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6288 interval: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6289 line: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6290 show: true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6291 opacity: 25
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6292 // color: "#aaa",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6293 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6294 weekend: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6295 opacity: 30
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6296 // color: "#FFFFE0",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6297 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6298 marker: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6299 hAlign: "Bottom",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6300 vAlign: "Right"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6301 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6302 hBottomStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6303 elmt.className = "timeline-ether-marker-bottom";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6304 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6305 hBottomEmphasizedStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6306 elmt.className = "timeline-ether-marker-bottom-emphasized";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6307 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6308 hTopStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6309 elmt.className = "timeline-ether-marker-top";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6310 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6311 hTopEmphasizedStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6312 elmt.className = "timeline-ether-marker-top-emphasized";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6313 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6314 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6316
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6317 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6318 vRightStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6319 elmt.className = "timeline-ether-marker-right";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6320 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6321 vRightEmphasizedStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6322 elmt.className = "timeline-ether-marker-right-emphasized";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6323 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6324 vLeftStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6325 elmt.className = "timeline-ether-marker-left";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6326 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6327 vLeftEmphasizedStyler:function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6328 elmt.className = "timeline-ether-marker-left-emphasized";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6329 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6330 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6331 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6332 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6333 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6335 this.event = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6336 track: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6337 height: 10, // px. You will need to change the track
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6338 // height if you change the tape height.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6339 gap: 2, // px. Gap between tracks
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6340 offset: 2, // px. top margin above tapes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6341 autoWidthMargin: 1.5
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6342 /* autoWidthMargin is only used if autoWidth (see above) is true.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6343 The autoWidthMargin setting is used to set how close the bottom of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6344 lowest track is to the edge of the band's div. The units are total track
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6345 width (tape + label + gap). A min of 0.5 is suggested. Use this setting to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6346 move the bottom track's tapes above the axis markers, if needed for your
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6347 Timeline.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6348 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6349 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6350 overviewTrack: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6351 offset: 20, // px -- top margin above tapes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6352 tickHeight: 6, // px
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6353 height: 2, // px
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6354 gap: 1, // px
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6355 autoWidthMargin: 5 // This attribute is only used if autoWidth (see above) is true.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6356 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6357 tape: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6358 height: 4 // px. For thicker tapes, remember to change track height too.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6359 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6360 instant: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6361 icon: Timeline.urlPrefix + "images/dull-blue-circle.png",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6362 // default icon. Icon can also be specified per event
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6363 iconWidth: 10,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6364 iconHeight: 10,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6365 impreciseOpacity: 20, // opacity of the tape when durationEvent is false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6366 impreciseIconMargin: 3 // A tape and an icon are painted for imprecise instant
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6367 // events. This attribute is the margin between the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6368 // bottom of the tape and the top of the icon in that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6369 // case.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6370 // color: "#58A0DC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6371 // impreciseColor: "#58A0DC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6372 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6373 duration: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6374 impreciseOpacity: 20 // tape opacity for imprecise part of duration events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6375 // color: "#58A0DC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6376 // impreciseColor: "#58A0DC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6377 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6378 label: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6379 backgroundOpacity: 50,// only used in detailed painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6380 offsetFromLine: 3 // px left margin amount from icon's right edge
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6381 // backgroundColor: "white",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6382 // lineColor: "#58A0DC",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6383 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6384 highlightColors: [ // Use with getEventPainter().setHighlightMatcher
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6385 // See webapp/examples/examples.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6386 "#FFFF00",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6387 "#FFC000",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6388 "#FF0000",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6389 "#0000FF"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6390 ],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6391 highlightLabelBackground: false, // When highlighting an event, also change the event's label background?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6392 bubble: {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6393 width: 250, // px
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6394 maxHeight: 0, // px Maximum height of bubbles. 0 means no max height.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6395 // scrollbar will be added for taller bubbles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6396 titleStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6397 elmt.className = "timeline-event-bubble-title";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6398 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6399 bodyStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6400 elmt.className = "timeline-event-bubble-body";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6401 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6402 imageStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6403 elmt.className = "timeline-event-bubble-image";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6404 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6405 wikiStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6406 elmt.className = "timeline-event-bubble-wiki";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6407 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6408 timeStyler: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6409 elmt.className = "timeline-event-bubble-time";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6410 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6411 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6412 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6413
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6414 this.mouseWheel = 'scroll'; // 'default', 'zoom', 'scroll'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6415 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6416 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6417 * An "ether" is a object that maps date/time to pixel coordinates.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6418 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6419 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6420
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6421 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6422 * Linear Ether
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6423 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6424 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6425
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6426 Timeline.LinearEther = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6427 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6428 this._interval = params.interval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6429 this._pixelsPerInterval = params.pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6430 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6431
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6432 Timeline.LinearEther.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6433 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6434 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6435 this._unit = timeline.getUnit();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6436
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6437 if ("startsOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6438 this._start = this._unit.parseFromObject(this._params.startsOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6439 } else if ("endsOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6440 this._start = this._unit.parseFromObject(this._params.endsOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6441 this.shiftPixels(-this._timeline.getPixelLength());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6442 } else if ("centersOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6443 this._start = this._unit.parseFromObject(this._params.centersOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6444 this.shiftPixels(-this._timeline.getPixelLength() / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6445 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6446 this._start = this._unit.makeDefaultValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6447 this.shiftPixels(-this._timeline.getPixelLength() / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6448 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6449 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6450
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6451 Timeline.LinearEther.prototype.setDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6452 this._start = this._unit.cloneValue(date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6453 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6454
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6455 Timeline.LinearEther.prototype.shiftPixels = function(pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6456 var numeric = this._interval * pixels / this._pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6457 this._start = this._unit.change(this._start, numeric);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6458 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6459
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6460 Timeline.LinearEther.prototype.dateToPixelOffset = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6461 var numeric = this._unit.compare(date, this._start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6462 return this._pixelsPerInterval * numeric / this._interval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6463 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6464
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6465 Timeline.LinearEther.prototype.pixelOffsetToDate = function(pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6466 var numeric = pixels * this._interval / this._pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6467 return this._unit.change(this._start, numeric);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6468 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6469
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6470 Timeline.LinearEther.prototype.zoom = function(zoomIn) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6471 var netIntervalChange = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6472 var currentZoomIndex = this._band._zoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6473 var newZoomIndex = currentZoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6474
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6475 if (zoomIn && (currentZoomIndex > 0)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6476 newZoomIndex = currentZoomIndex - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6477 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6479 if (!zoomIn && (currentZoomIndex < (this._band._zoomSteps.length - 1))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6480 newZoomIndex = currentZoomIndex + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6481 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6482
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6483 this._band._zoomIndex = newZoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6484 this._interval =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6485 SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[newZoomIndex].unit];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6486 this._pixelsPerInterval = this._band._zoomSteps[newZoomIndex].pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6487 netIntervalChange = this._band._zoomSteps[newZoomIndex].unit -
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6488 this._band._zoomSteps[currentZoomIndex].unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6489
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6490 return netIntervalChange;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6491 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6492
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6493
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6494 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6495 * Hot Zone Ether
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6496 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6497 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6499 Timeline.HotZoneEther = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6500 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6501 this._interval = params.interval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6502 this._pixelsPerInterval = params.pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6503 this._theme = params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6504 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6505
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6506 Timeline.HotZoneEther.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6507 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6508 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6509 this._unit = timeline.getUnit();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6510
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6511 this._zones = [{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6512 startTime: Number.NEGATIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6513 endTime: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6514 magnify: 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6515 }];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6516 var params = this._params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6517 for (var i = 0; i < params.zones.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6518 var zone = params.zones[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6519 var zoneStart = this._unit.parseFromObject(zone.start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6520 var zoneEnd = this._unit.parseFromObject(zone.end);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6521
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6522 for (var j = 0; j < this._zones.length && this._unit.compare(zoneEnd, zoneStart) > 0; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6523 var zone2 = this._zones[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6524
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6525 if (this._unit.compare(zoneStart, zone2.endTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6526 if (this._unit.compare(zoneStart, zone2.startTime) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6527 this._zones.splice(j, 0, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6528 startTime: zone2.startTime,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6529 endTime: zoneStart,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6530 magnify: zone2.magnify
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6531 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6532 j++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6533
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6534 zone2.startTime = zoneStart;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6536
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6537 if (this._unit.compare(zoneEnd, zone2.endTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6538 this._zones.splice(j, 0, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6539 startTime: zoneStart,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6540 endTime: zoneEnd,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6541 magnify: zone.magnify * zone2.magnify
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6542 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6543 j++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6544
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6545 zone2.startTime = zoneEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6546 zoneStart = zoneEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6547 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6548 zone2.magnify *= zone.magnify;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6549 zoneStart = zone2.endTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6550 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6551 } // else, try the next existing zone
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6552 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6553 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6554
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6555 if ("startsOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6556 this._start = this._unit.parseFromObject(this._params.startsOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6557 } else if ("endsOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6558 this._start = this._unit.parseFromObject(this._params.endsOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6559 this.shiftPixels(-this._timeline.getPixelLength());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6560 } else if ("centersOn" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6561 this._start = this._unit.parseFromObject(this._params.centersOn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6562 this.shiftPixels(-this._timeline.getPixelLength() / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6563 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6564 this._start = this._unit.makeDefaultValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6565 this.shiftPixels(-this._timeline.getPixelLength() / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6566 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6567 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6568
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6569 Timeline.HotZoneEther.prototype.setDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6570 this._start = this._unit.cloneValue(date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6571 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6572
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6573 Timeline.HotZoneEther.prototype.shiftPixels = function(pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6574 this._start = this.pixelOffsetToDate(pixels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6575 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6576
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6577 Timeline.HotZoneEther.prototype.dateToPixelOffset = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6578 return this._dateDiffToPixelOffset(this._start, date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6579 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6580
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6581 Timeline.HotZoneEther.prototype.pixelOffsetToDate = function(pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6582 return this._pixelOffsetToDate(pixels, this._start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6583 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6584
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6585 Timeline.HotZoneEther.prototype.zoom = function(zoomIn) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6586 var netIntervalChange = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6587 var currentZoomIndex = this._band._zoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6588 var newZoomIndex = currentZoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6590 if (zoomIn && (currentZoomIndex > 0)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6591 newZoomIndex = currentZoomIndex - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6592 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6594 if (!zoomIn && (currentZoomIndex < (this._band._zoomSteps.length - 1))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6595 newZoomIndex = currentZoomIndex + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6596 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6597
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6598 this._band._zoomIndex = newZoomIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6599 this._interval =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6600 SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[newZoomIndex].unit];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6601 this._pixelsPerInterval = this._band._zoomSteps[newZoomIndex].pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6602 netIntervalChange = this._band._zoomSteps[newZoomIndex].unit -
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6603 this._band._zoomSteps[currentZoomIndex].unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6604
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6605 return netIntervalChange;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6606 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6608 Timeline.HotZoneEther.prototype._dateDiffToPixelOffset = function(fromDate, toDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6609 var scale = this._getScale();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6610 var fromTime = fromDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6611 var toTime = toDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6612
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6613 var pixels = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6614 if (this._unit.compare(fromTime, toTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6615 var z = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6616 while (z < this._zones.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6617 if (this._unit.compare(fromTime, this._zones[z].endTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6618 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6619 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6620 z++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6621 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6623 while (this._unit.compare(fromTime, toTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6624 var zone = this._zones[z];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6625 var toTime2 = this._unit.earlier(toTime, zone.endTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6626
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6627 pixels += (this._unit.compare(toTime2, fromTime) / (scale / zone.magnify));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6628
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6629 fromTime = toTime2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6630 z++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6631 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6632 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6633 var z = this._zones.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6634 while (z >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6635 if (this._unit.compare(fromTime, this._zones[z].startTime) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6636 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6637 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6638 z--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6639 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6640
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6641 while (this._unit.compare(fromTime, toTime) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6642 var zone = this._zones[z];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6643 var toTime2 = this._unit.later(toTime, zone.startTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6644
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6645 pixels += (this._unit.compare(toTime2, fromTime) / (scale / zone.magnify));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6646
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6647 fromTime = toTime2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6648 z--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6649 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6650 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6651 return pixels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6652 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6653
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6654 Timeline.HotZoneEther.prototype._pixelOffsetToDate = function(pixels, fromDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6655 var scale = this._getScale();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6656 var time = fromDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6657 if (pixels > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6658 var z = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6659 while (z < this._zones.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6660 if (this._unit.compare(time, this._zones[z].endTime) < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6661 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6662 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6663 z++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6664 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6665
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6666 while (pixels > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6667 var zone = this._zones[z];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6668 var scale2 = scale / zone.magnify;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6669
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6670 if (zone.endTime == Number.POSITIVE_INFINITY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6671 time = this._unit.change(time, pixels * scale2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6672 pixels = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6673 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6674 var pixels2 = this._unit.compare(zone.endTime, time) / scale2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6675 if (pixels2 > pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6676 time = this._unit.change(time, pixels * scale2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6677 pixels = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6678 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6679 time = zone.endTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6680 pixels -= pixels2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6681 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6682 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6683 z++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6685 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6686 var z = this._zones.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6687 while (z >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6688 if (this._unit.compare(time, this._zones[z].startTime) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6689 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6690 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6691 z--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6692 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6693
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6694 pixels = -pixels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6695 while (pixels > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6696 var zone = this._zones[z];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6697 var scale2 = scale / zone.magnify;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6699 if (zone.startTime == Number.NEGATIVE_INFINITY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6700 time = this._unit.change(time, -pixels * scale2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6701 pixels = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6702 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6703 var pixels2 = this._unit.compare(time, zone.startTime) / scale2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6704 if (pixels2 > pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6705 time = this._unit.change(time, -pixels * scale2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6706 pixels = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6707 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6708 time = zone.startTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6709 pixels -= pixels2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6710 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6711 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6712 z--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6713 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6714 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6715 return time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6716 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6717
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6718 Timeline.HotZoneEther.prototype._getScale = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6719 return this._interval / this._pixelsPerInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6720 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6721 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6722 * Gregorian Ether Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6723 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6724 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6725
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6726 Timeline.GregorianEtherPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6727 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6728 this._theme = params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6729 this._unit = params.unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6730 this._multiple = ("multiple" in params) ? params.multiple : 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6731 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6732
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6733 Timeline.GregorianEtherPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6734 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6735 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6736
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6737 this._backgroundLayer = band.createLayerDiv(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6738 this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6739 this._backgroundLayer.className = 'timeline-ether-bg';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6740 // this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6742
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6743 this._markerLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6744 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6746 var align = ("align" in this._params && this._params.align != undefined) ? this._params.align :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6747 this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6748 var showLine = ("showLine" in this._params) ? this._params.showLine :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6749 this._theme.ether.interval.line.show;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6750
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6751 this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6752 this._timeline, this._band, this._theme, align, showLine);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6753
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6754 this._highlight = new Timeline.EtherHighlight(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6755 this._timeline, this._band, this._theme, this._backgroundLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6756 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6757
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6758 Timeline.GregorianEtherPainter.prototype.setHighlight = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6759 this._highlight.position(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6760 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6761
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6762 Timeline.GregorianEtherPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6763 if (this._markerLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6764 this._band.removeLayerDiv(this._markerLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6765 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6766 this._markerLayer = this._band.createLayerDiv(100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6767 this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6768 this._markerLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6769
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6770 if (this._lineLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6771 this._band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6772 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6773 this._lineLayer = this._band.createLayerDiv(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6774 this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6775 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6777 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6778 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6780 var timeZone = this._band.getTimeZone();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6781 var labeller = this._band.getLabeller();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6783 SimileAjax.DateTime.roundDownToInterval(minDate, this._unit, timeZone, this._multiple, this._theme.firstDayOfWeek);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6784
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6785 var p = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6786 var incrementDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6787 for (var i = 0; i < p._multiple; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6788 SimileAjax.DateTime.incrementByInterval(date, p._unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6789 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6790 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6791
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6792 while (minDate.getTime() < maxDate.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6793 this._intervalMarkerLayout.createIntervalMarker(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6794 minDate, labeller, this._unit, this._markerLayer, this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6795
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6796 incrementDate(minDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6797 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6798 this._markerLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6799 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6800 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6801
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6802 Timeline.GregorianEtherPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6803 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6804
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6805 Timeline.GregorianEtherPainter.prototype.zoom = function(netIntervalChange) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6806 if (netIntervalChange != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6807 this._unit += netIntervalChange;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6808 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6809 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6810
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6811
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6812 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6813 * Hot Zone Gregorian Ether Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6814 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6815 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6816
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6817 Timeline.HotZoneGregorianEtherPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6818 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6819 this._theme = params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6820
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6821 this._zones = [{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6822 startTime: Number.NEGATIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6823 endTime: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6824 unit: params.unit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6825 multiple: 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6826 }];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6827 for (var i = 0; i < params.zones.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6828 var zone = params.zones[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6829 var zoneStart = SimileAjax.DateTime.parseGregorianDateTime(zone.start).getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6830 var zoneEnd = SimileAjax.DateTime.parseGregorianDateTime(zone.end).getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6831
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6832 for (var j = 0; j < this._zones.length && zoneEnd > zoneStart; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6833 var zone2 = this._zones[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6834
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6835 if (zoneStart < zone2.endTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6836 if (zoneStart > zone2.startTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6837 this._zones.splice(j, 0, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6838 startTime: zone2.startTime,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6839 endTime: zoneStart,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6840 unit: zone2.unit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6841 multiple: zone2.multiple
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6842 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6843 j++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6844
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6845 zone2.startTime = zoneStart;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6846 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6847
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6848 if (zoneEnd < zone2.endTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6849 this._zones.splice(j, 0, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6850 startTime: zoneStart,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6851 endTime: zoneEnd,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6852 unit: zone.unit,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6853 multiple: (zone.multiple) ? zone.multiple : 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6854 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6855 j++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6856
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6857 zone2.startTime = zoneEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6858 zoneStart = zoneEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6859 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6860 zone2.multiple = zone.multiple;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6861 zone2.unit = zone.unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6862 zoneStart = zone2.endTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6864 } // else, try the next existing zone
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6865 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6866 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6867 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6868
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6869 Timeline.HotZoneGregorianEtherPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6870 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6871 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6872
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6873 this._backgroundLayer = band.createLayerDiv(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6874 this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6875 this._backgroundLayer.className ='timeline-ether-bg';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6876 //this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6877
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6878 this._markerLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6879 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6880
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6881 var align = ("align" in this._params && this._params.align != undefined) ? this._params.align :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6882 this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6883 var showLine = ("showLine" in this._params) ? this._params.showLine :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6884 this._theme.ether.interval.line.show;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6885
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6886 this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6887 this._timeline, this._band, this._theme, align, showLine);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6888
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6889 this._highlight = new Timeline.EtherHighlight(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6890 this._timeline, this._band, this._theme, this._backgroundLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6891 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6892
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6893 Timeline.HotZoneGregorianEtherPainter.prototype.setHighlight = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6894 this._highlight.position(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6895 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6896
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6897 Timeline.HotZoneGregorianEtherPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6898 if (this._markerLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6899 this._band.removeLayerDiv(this._markerLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6900 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6901 this._markerLayer = this._band.createLayerDiv(100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6902 this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6903 this._markerLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6904
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6905 if (this._lineLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6906 this._band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6907 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6908 this._lineLayer = this._band.createLayerDiv(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6909 this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6910 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6911
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6912 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6913 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6915 var timeZone = this._band.getTimeZone();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6916 var labeller = this._band.getLabeller();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6917
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6918 var p = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6919 var incrementDate = function(date, zone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6920 for (var i = 0; i < zone.multiple; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6921 SimileAjax.DateTime.incrementByInterval(date, zone.unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6922 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6923 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6925 var zStart = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6926 while (zStart < this._zones.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6927 if (minDate.getTime() < this._zones[zStart].endTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6928 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6929 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6930 zStart++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6931 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6932 var zEnd = this._zones.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6933 while (zEnd >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6934 if (maxDate.getTime() > this._zones[zEnd].startTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6935 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6936 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6937 zEnd--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6938 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6939
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6940 for (var z = zStart; z <= zEnd; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6941 var zone = this._zones[z];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6942
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6943 var minDate2 = new Date(Math.max(minDate.getTime(), zone.startTime));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6944 var maxDate2 = new Date(Math.min(maxDate.getTime(), zone.endTime));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6946 SimileAjax.DateTime.roundDownToInterval(minDate2, zone.unit, timeZone, zone.multiple, this._theme.firstDayOfWeek);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6947 SimileAjax.DateTime.roundUpToInterval(maxDate2, zone.unit, timeZone, zone.multiple, this._theme.firstDayOfWeek);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6948
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6949 while (minDate2.getTime() < maxDate2.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6950 this._intervalMarkerLayout.createIntervalMarker(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6951 minDate2, labeller, zone.unit, this._markerLayer, this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6952
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6953 incrementDate(minDate2, zone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6954 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6955 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6956 this._markerLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6957 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6958 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6959
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6960 Timeline.HotZoneGregorianEtherPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6961 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6962
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6963 Timeline.HotZoneGregorianEtherPainter.prototype.zoom = function(netIntervalChange) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6964 if (netIntervalChange != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6965 for (var i = 0; i < this._zones.length; ++i) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6966 if (this._zones[i]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6967 this._zones[i].unit += netIntervalChange;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6968 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6969 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6970 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6971 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6972
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6973 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6974 * Year Count Ether Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6975 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6976 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6977
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6978 Timeline.YearCountEtherPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6979 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6980 this._theme = params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6981 this._startDate = SimileAjax.DateTime.parseGregorianDateTime(params.startDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6982 this._multiple = ("multiple" in params) ? params.multiple : 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6983 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6984
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6985 Timeline.YearCountEtherPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6986 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6987 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6988
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6989 this._backgroundLayer = band.createLayerDiv(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6990 this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6991 this._backgroundLayer.className = 'timeline-ether-bg';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6992 // this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6993
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6994 this._markerLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6995 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6996
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6997 var align = ("align" in this._params) ? this._params.align :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6998 this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
6999 var showLine = ("showLine" in this._params) ? this._params.showLine :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7000 this._theme.ether.interval.line.show;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7002 this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7003 this._timeline, this._band, this._theme, align, showLine);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7004
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7005 this._highlight = new Timeline.EtherHighlight(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7006 this._timeline, this._band, this._theme, this._backgroundLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7007 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7008
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7009 Timeline.YearCountEtherPainter.prototype.setHighlight = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7010 this._highlight.position(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7011 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7012
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7013 Timeline.YearCountEtherPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7014 if (this._markerLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7015 this._band.removeLayerDiv(this._markerLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7016 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7017 this._markerLayer = this._band.createLayerDiv(100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7018 this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7019 this._markerLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7020
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7021 if (this._lineLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7022 this._band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7023 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7024 this._lineLayer = this._band.createLayerDiv(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7025 this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7026 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7028 var minDate = new Date(this._startDate.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7029 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7030 var yearDiff = this._band.getMinDate().getUTCFullYear() - this._startDate.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7031 minDate.setUTCFullYear(this._band.getMinDate().getUTCFullYear() - yearDiff % this._multiple);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7032
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7033 var p = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7034 var incrementDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7035 for (var i = 0; i < p._multiple; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7036 SimileAjax.DateTime.incrementByInterval(date, SimileAjax.DateTime.YEAR);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7037 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7038 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7039 var labeller = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7040 labelInterval: function(date, intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7041 var diff = date.getUTCFullYear() - p._startDate.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7042 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7043 text: diff,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7044 emphasized: diff == 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7045 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7046 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7047 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7048
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7049 while (minDate.getTime() < maxDate.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7050 this._intervalMarkerLayout.createIntervalMarker(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7051 minDate, labeller, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7052
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7053 incrementDate(minDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7054 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7055 this._markerLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7056 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7057 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7058
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7059 Timeline.YearCountEtherPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7060 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7061
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7062 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7063 * Quarterly Ether Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7064 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7065 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7066
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7067 Timeline.QuarterlyEtherPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7068 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7069 this._theme = params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7070 this._startDate = SimileAjax.DateTime.parseGregorianDateTime(params.startDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7071 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7072
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7073 Timeline.QuarterlyEtherPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7074 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7075 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7076
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7077 this._backgroundLayer = band.createLayerDiv(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7078 this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7079 this._backgroundLayer.className = 'timeline-ether-bg';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7080 // this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7081
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7082 this._markerLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7083 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7084
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7085 var align = ("align" in this._params) ? this._params.align :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7086 this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7087 var showLine = ("showLine" in this._params) ? this._params.showLine :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7088 this._theme.ether.interval.line.show;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7089
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7090 this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7091 this._timeline, this._band, this._theme, align, showLine);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7092
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7093 this._highlight = new Timeline.EtherHighlight(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7094 this._timeline, this._band, this._theme, this._backgroundLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7095 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7096
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7097 Timeline.QuarterlyEtherPainter.prototype.setHighlight = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7098 this._highlight.position(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7099 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7100
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7101 Timeline.QuarterlyEtherPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7102 if (this._markerLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7103 this._band.removeLayerDiv(this._markerLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7104 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7105 this._markerLayer = this._band.createLayerDiv(100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7106 this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7107 this._markerLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7108
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7109 if (this._lineLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7110 this._band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7111 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7112 this._lineLayer = this._band.createLayerDiv(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7113 this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7114 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7115
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7116 var minDate = new Date(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7117 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7118
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7119 minDate.setUTCFullYear(Math.max(this._startDate.getUTCFullYear(), this._band.getMinDate().getUTCFullYear()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7120 minDate.setUTCMonth(this._startDate.getUTCMonth());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7122 var p = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7123 var incrementDate = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7124 date.setUTCMonth(date.getUTCMonth() + 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7125 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7126 var labeller = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7127 labelInterval: function(date, intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7128 var quarters = (4 + (date.getUTCMonth() - p._startDate.getUTCMonth()) / 3) % 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7129 if (quarters != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7130 return { text: "Q" + (quarters + 1), emphasized: false };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7131 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7132 return { text: "Y" + (date.getUTCFullYear() - p._startDate.getUTCFullYear() + 1), emphasized: true };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7133 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7134 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7135 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7136
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7137 while (minDate.getTime() < maxDate.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7138 this._intervalMarkerLayout.createIntervalMarker(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7139 minDate, labeller, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7141 incrementDate(minDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7142 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7143 this._markerLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7144 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7145 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7146
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7147 Timeline.QuarterlyEtherPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7148 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7149
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7150 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7151 * Ether Interval Marker Layout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7152 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7153 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7154
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7155 Timeline.EtherIntervalMarkerLayout = function(timeline, band, theme, align, showLine) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7156 var horizontal = timeline.isHorizontal();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7157 if (horizontal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7158 if (align == "Top") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7159 this.positionDiv = function(div, offset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7160 div.style.left = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7161 div.style.top = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7162 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7163 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7164 this.positionDiv = function(div, offset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7165 div.style.left = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7166 div.style.bottom = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7167 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7168 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7169 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7170 if (align == "Left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7171 this.positionDiv = function(div, offset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7172 div.style.top = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7173 div.style.left = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7174 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7175 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7176 this.positionDiv = function(div, offset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7177 div.style.top = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7178 div.style.right = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7179 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7180 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7182
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7183 var markerTheme = theme.ether.interval.marker;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7184 var lineTheme = theme.ether.interval.line;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7185 var weekendTheme = theme.ether.interval.weekend;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7186
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7187 var stylePrefix = (horizontal ? "h" : "v") + align;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7188 var labelStyler = markerTheme[stylePrefix + "Styler"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7189 var emphasizedLabelStyler = markerTheme[stylePrefix + "EmphasizedStyler"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7190 var day = SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.DAY];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7191
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7192 this.createIntervalMarker = function(date, labeller, unit, markerDiv, lineDiv) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7193 var offset = Math.round(band.dateToPixelOffset(date));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7194
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7195 if (showLine && unit != SimileAjax.DateTime.WEEK) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7196 var divLine = timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7197 divLine.className = "timeline-ether-lines";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7198
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7199 if (lineTheme.opacity < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7200 SimileAjax.Graphics.setOpacity(divLine, lineTheme.opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7201 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7202
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7203 if (horizontal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7204 //divLine.className += " timeline-ether-lines-vertical";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7205 divLine.style.left = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7206 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7207 //divLine.className += " timeline-ether-lines-horizontal";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7208 divLine.style.top = offset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7209 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7210 lineDiv.appendChild(divLine);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7211 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7212 if (unit == SimileAjax.DateTime.WEEK) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7213 var firstDayOfWeek = theme.firstDayOfWeek;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7214
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7215 var saturday = new Date(date.getTime() + (6 - firstDayOfWeek - 7) * day);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7216 var monday = new Date(saturday.getTime() + 2 * day);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7217
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7218 var saturdayPixel = Math.round(band.dateToPixelOffset(saturday));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7219 var mondayPixel = Math.round(band.dateToPixelOffset(monday));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7220 var length = Math.max(1, mondayPixel - saturdayPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7222 var divWeekend = timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7223 divWeekend.className = 'timeline-ether-weekends'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7224
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7225 if (weekendTheme.opacity < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7226 SimileAjax.Graphics.setOpacity(divWeekend, weekendTheme.opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7227 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7228
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7229 if (horizontal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7230 divWeekend.style.left = saturdayPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7231 divWeekend.style.width = length + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7232 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7233 divWeekend.style.top = saturdayPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7234 divWeekend.style.height = length + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7235 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7236 lineDiv.appendChild(divWeekend);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7237 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7238
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7239 var label = labeller.labelInterval(date, unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7240
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7241 var div = timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7242 div.innerHTML = label.text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7244
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7246 div.className = 'timeline-date-label'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7247 if(label.emphasized) div.className += ' timeline-date-label-em'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7248
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7249 this.positionDiv(div, offset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7250 markerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7251
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7252 return div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7253 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7254 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7255
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7256 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7257 * Ether Highlight Layout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7258 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7259 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7260
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7261 Timeline.EtherHighlight = function(timeline, band, theme, backgroundLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7262 var horizontal = timeline.isHorizontal();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7263
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7264 this._highlightDiv = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7265 this._createHighlightDiv = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7266 if (this._highlightDiv == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7267 this._highlightDiv = timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7268 this._highlightDiv.setAttribute("name", "ether-highlight"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7269 this._highlightDiv.className = 'timeline-ether-highlight'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7271 var opacity = theme.ether.highlightOpacity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7272 if (opacity < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7273 SimileAjax.Graphics.setOpacity(this._highlightDiv, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7274 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7276 backgroundLayer.appendChild(this._highlightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7277 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7278 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7279
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7280 this.position = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7281 this._createHighlightDiv();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7282
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7283 var startPixel = Math.round(band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7284 var endPixel = Math.round(band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7285 var length = Math.max(endPixel - startPixel, 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7286 if (horizontal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7287 this._highlightDiv.style.left = startPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7288 this._highlightDiv.style.width = length + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7289 this._highlightDiv.style.height = (band.getViewWidth() - 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7290 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7291 this._highlightDiv.style.top = startPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7292 this._highlightDiv.style.height = length + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7293 this._highlightDiv.style.width = (band.getViewWidth() - 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7294 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7295 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7296 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7297 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7298 * Event Utils
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7299 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7300 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7301 Timeline.EventUtils = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7302
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7303 Timeline.EventUtils.getNewEventID = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7304 // global across page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7305 if (this._lastEventID == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7306 this._lastEventID = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7307 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7308
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7309 this._lastEventID += 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7310 return "e" + this._lastEventID;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7311 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7312
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7313 Timeline.EventUtils.decodeEventElID = function(elementID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7314 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7315 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7316 * Use this function to decode an event element's id on a band (label div,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7317 * tape div or icon img).
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7318 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7319 * Returns {band: <bandObj>, evt: <eventObj>}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7320 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7321 * To enable a single event listener to monitor everything
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7322 * on a Timeline, a set format is used for the id's of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7323 * elements on the Timeline--
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7324 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7325 * element id format for labels, icons, tapes:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7326 * labels: label-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7327 * icons: icon-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7328 * tapes: tape1-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7329 * tape2-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7330 * // some events have more than one tape
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7331 * highlight: highlight1-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7332 * highlight2-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7333 * // some events have more than one highlight div (future)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7334 * Note: use split('-') to get array of the format's parts
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7335 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7336 * You can then retrieve the timeline object and event object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7337 * by using Timeline.getTimeline, Timeline.getBand, or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7338 * Timeline.getEvent and passing in the element's id
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7339 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7340 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7341 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7342
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7343 var parts = elementID.split('-');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7344 if (parts[1] != 'tl') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7345 alert("Internal Timeline problem 101, please consult support");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7346 return {band: null, evt: null}; // early return
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7347 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7348
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7349 var timeline = Timeline.getTimelineFromID(parts[2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7350 var band = timeline.getBand(parts[3]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7351 var evt = band.getEventSource.getEvent(parts[4]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7352
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7353 return {band: band, evt: evt};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7354 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7355
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7356 Timeline.EventUtils.encodeEventElID = function(timeline, band, elType, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7357 // elType should be one of {label | icon | tapeN | highlightN}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7358 return elType + "-tl-" + timeline.timelineID +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7359 "-" + band.getIndex() + "-" + evt.getID();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7360 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7361 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7362 * Gregorian Date Labeller
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7363 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7364 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7365
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7366 Timeline.GregorianDateLabeller = function(locale, timeZone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7367 this._locale = locale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7368 this._timeZone = timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7369 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7370
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7371 Timeline.GregorianDateLabeller.monthNames = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7372 Timeline.GregorianDateLabeller.dayNames = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7373 Timeline.GregorianDateLabeller.labelIntervalFunctions = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7374
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7375 Timeline.GregorianDateLabeller.getMonthName = function(month, locale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7376 return Timeline.GregorianDateLabeller.monthNames[locale][month];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7377 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7379 Timeline.GregorianDateLabeller.prototype.labelInterval = function(date, intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7380 var f = Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7381 if (f == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7382 f = Timeline.GregorianDateLabeller.prototype.defaultLabelInterval;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7384 return f.call(this, date, intervalUnit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7385 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7386
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7387 Timeline.GregorianDateLabeller.prototype.labelPrecise = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7388 return SimileAjax.DateTime.removeTimeZoneOffset(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7389 date,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7390 this._timeZone //+ (new Date().getTimezoneOffset() / 60)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7391 ).toUTCString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7392 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7393
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7394 Timeline.GregorianDateLabeller.prototype.defaultLabelInterval = function(date, intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7395 var text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7396 var emphasized = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7397
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7398 date = SimileAjax.DateTime.removeTimeZoneOffset(date, this._timeZone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7399
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7400 switch(intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7401 case SimileAjax.DateTime.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7402 text = date.getUTCMilliseconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7403 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7404 case SimileAjax.DateTime.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7405 text = date.getUTCSeconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7406 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7407 case SimileAjax.DateTime.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7408 var m = date.getUTCMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7409 if (m == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7410 text = date.getUTCHours() + ":00";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7411 emphasized = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7412 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7413 text = m;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7414 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7415 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7416 case SimileAjax.DateTime.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7417 text = date.getUTCHours() + "hr";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7418 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7419 case SimileAjax.DateTime.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7420 text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7421 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7422 case SimileAjax.DateTime.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7423 text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7424 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7425 case SimileAjax.DateTime.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7426 var m = date.getUTCMonth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7427 if (m != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7428 text = Timeline.GregorianDateLabeller.getMonthName(m, this._locale);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7429 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7430 } // else, fall through
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7431 case SimileAjax.DateTime.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7432 case SimileAjax.DateTime.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7433 case SimileAjax.DateTime.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7434 case SimileAjax.DateTime.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7435 var y = date.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7436 if (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7437 text = date.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7438 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7439 text = (1 - y) + "BC";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7440 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7441 emphasized =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7442 (intervalUnit == SimileAjax.DateTime.MONTH) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7443 (intervalUnit == SimileAjax.DateTime.DECADE && y % 100 == 0) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7444 (intervalUnit == SimileAjax.DateTime.CENTURY && y % 1000 == 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7445 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7446 default:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7447 text = date.toUTCString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7448 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7449 return { text: text, emphasized: emphasized };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7450 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7451
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7452 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7453 * Default Event Source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7454 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7455 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7457
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7458 Timeline.DefaultEventSource = function(eventIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7459 this._events = (eventIndex instanceof Object) ? eventIndex : new SimileAjax.EventIndex();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7460 this._listeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7461 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7462
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7463 Timeline.DefaultEventSource.prototype.addListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7464 this._listeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7465 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7466
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7467 Timeline.DefaultEventSource.prototype.removeListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7468 for (var i = 0; i < this._listeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7469 if (this._listeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7470 this._listeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7471 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7472 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7473 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7474 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7475
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7476 Timeline.DefaultEventSource.prototype.loadXML = function(xml, url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7477 var base = this._getBaseURL(url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7479 var wikiURL = xml.documentElement.getAttribute("wiki-url");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7480 var wikiSection = xml.documentElement.getAttribute("wiki-section");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7481
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7482 var dateTimeFormat = xml.documentElement.getAttribute("date-time-format");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7483 var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7484
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7485 var node = xml.documentElement.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7486 var added = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7487 while (node != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7488 if (node.nodeType == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7489 var description = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7490 if (node.firstChild != null && node.firstChild.nodeType == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7491 description = node.firstChild.nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7492 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7493 // instant event: default is true. Or use values from isDuration or durationEvent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7494 var instant = (node.getAttribute("isDuration") === null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7495 node.getAttribute("durationEvent") === null) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7496 node.getAttribute("isDuration") == "false" ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7497 node.getAttribute("durationEvent") == "false";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7499 var evt = new Timeline.DefaultEventSource.Event( {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7500 id: node.getAttribute("id"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7501 start: parseDateTimeFunction(node.getAttribute("start")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7502 end: parseDateTimeFunction(node.getAttribute("end")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7503 latestStart: parseDateTimeFunction(node.getAttribute("latestStart")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7504 earliestEnd: parseDateTimeFunction(node.getAttribute("earliestEnd")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7505 instant: instant,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7506 text: node.getAttribute("title"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7507 description: description,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7508 image: this._resolveRelativeURL(node.getAttribute("image"), base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7509 link: this._resolveRelativeURL(node.getAttribute("link") , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7510 icon: this._resolveRelativeURL(node.getAttribute("icon") , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7511 color: node.getAttribute("color"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7512 textColor: node.getAttribute("textColor"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7513 hoverText: node.getAttribute("hoverText"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7514 classname: node.getAttribute("classname"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7515 tapeImage: node.getAttribute("tapeImage"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7516 tapeRepeat: node.getAttribute("tapeRepeat"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7517 caption: node.getAttribute("caption"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7518 eventID: node.getAttribute("eventID"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7519 trackNum: node.getAttribute("trackNum")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7520 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7521
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7522 evt._node = node;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7523 evt.getProperty = function(name) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7524 return this._node.getAttribute(name);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7525 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7526 evt.setWikiInfo(wikiURL, wikiSection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7527
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7528 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7529
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7530 added = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7531 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7532 node = node.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7533 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7534
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7535 if (added) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7536 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7538 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7539
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7540
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7541 Timeline.DefaultEventSource.prototype.loadJSON = function(data, url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7542 var base = this._getBaseURL(url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7543 var added = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7544 if (data && data.events){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7545 var wikiURL = ("wikiURL" in data) ? data.wikiURL : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7546 var wikiSection = ("wikiSection" in data) ? data.wikiSection : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7548 var dateTimeFormat = ("dateTimeFormat" in data) ? data.dateTimeFormat : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7549 var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7550
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7551 for (var i=0; i < data.events.length; i++){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7552 var event = data.events[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7553 // Fixing issue 33:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7554 // instant event: default (for JSON only) is false. Or use values from isDuration or durationEvent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7555 // isDuration was negated (see issue 33, so keep that interpretation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7556 var instant = event.isDuration || (event.durationEvent != null && !event.durationEvent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7557
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7558 var evt = new Timeline.DefaultEventSource.Event({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7559 id: ("id" in event) ? event.id : undefined,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7560 start: parseDateTimeFunction(event.start),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7561 end: parseDateTimeFunction(event.end),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7562 latestStart: parseDateTimeFunction(event.latestStart),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7563 earliestEnd: parseDateTimeFunction(event.earliestEnd),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7564 instant: instant,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7565 text: event.title,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7566 description: event.description,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7567 image: this._resolveRelativeURL(event.image, base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7568 link: this._resolveRelativeURL(event.link , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7569 icon: this._resolveRelativeURL(event.icon , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7570 color: event.color,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7571 textColor: event.textColor,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7572 hoverText: event.hoverText,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7573 classname: event.classname,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7574 tapeImage: event.tapeImage,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7575 tapeRepeat: event.tapeRepeat,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7576 caption: event.caption,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7577 eventID: event.eventID,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7578 trackNum: event.trackNum
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7579 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7580 evt._obj = event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7581 evt.getProperty = function(name) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7582 return this._obj[name];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7583 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7584 evt.setWikiInfo(wikiURL, wikiSection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7586 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7587 added = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7588 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7589 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7590
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7591 if (added) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7592 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7593 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7594 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7595
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7596 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7597 * Contributed by Morten Frederiksen, http://www.wasab.dk/morten/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7598 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7599 Timeline.DefaultEventSource.prototype.loadSPARQL = function(xml, url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7600 var base = this._getBaseURL(url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7601
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7602 var dateTimeFormat = 'iso8601';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7603 var parseDateTimeFunction = this._events.getUnit().getParser(dateTimeFormat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7604
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7605 if (xml == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7606 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7607 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7608
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7609 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7610 * Find <results> tag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7611 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7612 var node = xml.documentElement.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7613 while (node != null && (node.nodeType != 1 || node.nodeName != 'results')) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7614 node = node.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7615 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7616
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7617 var wikiURL = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7618 var wikiSection = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7619 if (node != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7620 wikiURL = node.getAttribute("wiki-url");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7621 wikiSection = node.getAttribute("wiki-section");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7623 node = node.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7624 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7626 var added = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7627 while (node != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7628 if (node.nodeType == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7629 var bindings = { };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7630 var binding = node.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7631 while (binding != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7632 if (binding.nodeType == 1 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7633 binding.firstChild != null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7634 binding.firstChild.nodeType == 1 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7635 binding.firstChild.firstChild != null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7636 binding.firstChild.firstChild.nodeType == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7637 bindings[binding.getAttribute('name')] = binding.firstChild.firstChild.nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7638 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7639 binding = binding.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7640 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7641
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7642 if (bindings["start"] == null && bindings["date"] != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7643 bindings["start"] = bindings["date"];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7644 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7645
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7646 // instant event: default is true. Or use values from isDuration or durationEvent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7647 var instant = (bindings["isDuration"] === null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7648 bindings["durationEvent"] === null) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7649 bindings["isDuration"] == "false" ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7650 bindings["durationEvent"] == "false";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7651
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7652 var evt = new Timeline.DefaultEventSource.Event({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7653 id: bindings["id"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7654 start: parseDateTimeFunction(bindings["start"]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7655 end: parseDateTimeFunction(bindings["end"]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7656 latestStart: parseDateTimeFunction(bindings["latestStart"]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7657 earliestEnd: parseDateTimeFunction(bindings["earliestEnd"]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7658 instant: instant, // instant
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7659 text: bindings["title"], // text
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7660 description: bindings["description"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7661 image: this._resolveRelativeURL(bindings["image"], base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7662 link: this._resolveRelativeURL(bindings["link"] , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7663 icon: this._resolveRelativeURL(bindings["icon"] , base),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7664 color: bindings["color"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7665 textColor: bindings["textColor"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7666 hoverText: bindings["hoverText"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7667 caption: bindings["caption"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7668 classname: bindings["classname"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7669 tapeImage: bindings["tapeImage"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7670 tapeRepeat: bindings["tapeRepeat"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7671 eventID: bindings["eventID"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7672 trackNum: bindings["trackNum"]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7673 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7674 evt._bindings = bindings;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7675 evt.getProperty = function(name) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7676 return this._bindings[name];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7677 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7678 evt.setWikiInfo(wikiURL, wikiSection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7679
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7680 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7681 added = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7682 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7683 node = node.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7685
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7686 if (added) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7687 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7688 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7689 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7690
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7691 Timeline.DefaultEventSource.prototype.add = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7692 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7693 this._fire("onAddOne", [evt]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7694 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7695
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7696 Timeline.DefaultEventSource.prototype.addMany = function(events) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7697 for (var i = 0; i < events.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7698 this._events.add(events[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7699 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7700 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7701 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7702
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7703 Timeline.DefaultEventSource.prototype.clear = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7704 this._events.removeAll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7705 this._fire("onClear", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7706 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7707
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7708 Timeline.DefaultEventSource.prototype.getEvent = function(id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7709 return this._events.getEvent(id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7710 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7711
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7712 Timeline.DefaultEventSource.prototype.getEventIterator = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7713 return this._events.getIterator(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7714 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7715
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7716 Timeline.DefaultEventSource.prototype.getEventReverseIterator = function(startDate, endDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7717 return this._events.getReverseIterator(startDate, endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7718 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7719
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7720 Timeline.DefaultEventSource.prototype.getAllEventIterator = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7721 return this._events.getAllIterator();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7722 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7723
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7724 Timeline.DefaultEventSource.prototype.getCount = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7725 return this._events.getCount();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7726 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7728 Timeline.DefaultEventSource.prototype.getEarliestDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7729 return this._events.getEarliestDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7730 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7731
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7732 Timeline.DefaultEventSource.prototype.getLatestDate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7733 return this._events.getLatestDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7734 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7735
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7736 Timeline.DefaultEventSource.prototype._fire = function(handlerName, args) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7737 for (var i = 0; i < this._listeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7738 var listener = this._listeners[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7739 if (handlerName in listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7740 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7741 listener[handlerName].apply(listener, args);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7742 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7743 SimileAjax.Debug.exception(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7744 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7745 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7746 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7747 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7748
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7749 Timeline.DefaultEventSource.prototype._getBaseURL = function(url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7750 if (url.indexOf("://") < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7751 var url2 = this._getBaseURL(document.location.href);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7752 if (url.substr(0,1) == "/") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7753 url = url2.substr(0, url2.indexOf("/", url2.indexOf("://") + 3)) + url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7754 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7755 url = url2 + url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7756 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7758
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7759 var i = url.lastIndexOf("/");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7760 if (i < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7761 return "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7762 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7763 return url.substr(0, i+1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7764 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7765 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7766
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7767 Timeline.DefaultEventSource.prototype._resolveRelativeURL = function(url, base) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7768 if (url == null || url == "") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7769 return url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7770 } else if (url.indexOf("://") > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7771 return url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7772 } else if (url.substr(0,1) == "/") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7773 return base.substr(0, base.indexOf("/", base.indexOf("://") + 3)) + url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7774 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7775 return base + url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7776 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7777 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7778
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7780 Timeline.DefaultEventSource.Event = function(args) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7781 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7782 // Attention developers!
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7783 // If you add a new event attribute, please be sure to add it to
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7784 // all three load functions: loadXML, loadSPARCL, loadJSON.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7785 // Thanks!
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7786 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7787 // args is a hash/object. It supports the following keys. Most are optional
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7788 // id -- an internal id. Really shouldn't be used by events.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7789 // Timeline library clients should use eventID
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7790 // eventID -- For use by library client when writing custom painters or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7791 // custom fillInfoBubble
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7792 // start
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7793 // end
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7794 // latestStart
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7795 // earliestEnd
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7796 // instant -- boolean. Controls precise/non-precise logic & duration/instant issues
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7797 // text -- event source attribute 'title' -- used as the label on Timelines and in bubbles.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7798 // description -- used in bubbles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7799 // image -- used in bubbles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7800 // link -- used in bubbles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7801 // icon -- on the Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7802 // color -- Timeline label and tape color
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7803 // textColor -- Timeline label color, overrides color attribute
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7804 // hoverText -- deprecated, here for backwards compatibility.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7805 // Superceeded by caption
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7806 // caption -- tooltip-like caption on the Timeline. Uses HTML title attribute
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7807 // classname -- used to set classname in Timeline. Enables better CSS selector rules
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7808 // tapeImage -- background image of the duration event's tape div on the Timeline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7809 // tapeRepeat -- repeat attribute for tapeImage. {repeat | repeat-x | repeat-y }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7810
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7811 function cleanArg(arg) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7812 // clean up an arg
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7813 return (args[arg] != null && args[arg] != "") ? args[arg] : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7814 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7815
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7816 var id = args.id ? args.id.trim() : "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7817 this._id = id.length > 0 ? id : Timeline.EventUtils.getNewEventID();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7818
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7819 this._instant = args.instant || (args.end == null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7820
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7821 this._start = args.start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7822 this._end = (args.end != null) ? args.end : args.start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7823
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7824 this._latestStart = (args.latestStart != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7825 args.latestStart : (args.instant ? this._end : this._start);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7826 this._earliestEnd = (args.earliestEnd != null) ? args.earliestEnd : this._end;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7827
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7828 // check sanity of dates since incorrect dates will later cause calculation errors
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7829 // when painting
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7830 var err=[];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7831 if (this._start > this._latestStart) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7832 this._latestStart = this._start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7833 err.push("start is > latestStart");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7834 if (this._start > this._earliestEnd) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7835 this._earliestEnd = this._latestStart;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7836 err.push("start is > earliestEnd");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7837 if (this._start > this._end) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7838 this._end = this._earliestEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7839 err.push("start is > end");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7840 if (this._latestStart > this._earliestEnd) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7841 this._earliestEnd = this._latestStart;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7842 err.push("latestStart is > earliestEnd");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7843 if (this._latestStart > this._end) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7844 this._end = this._earliestEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7845 err.push("latestStart is > end");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7846 if (this._earliestEnd > this._end) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7847 this._end = this._earliestEnd;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7848 err.push("earliestEnd is > end");}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7849
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7850 this._eventID = cleanArg('eventID');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7851 this._text = (args.text != null) ? SimileAjax.HTML.deEntify(args.text) : ""; // Change blank titles to ""
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7852 if (err.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7853 this._text += " PROBLEM: " + err.join(", ");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7854 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7855
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7856 this._description = SimileAjax.HTML.deEntify(args.description);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7857 this._image = cleanArg('image');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7858 this._link = cleanArg('link');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7859 this._title = cleanArg('hoverText');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7860 this._title = cleanArg('caption');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7861
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7862 this._icon = cleanArg('icon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7863 this._color = cleanArg('color');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7864 this._textColor = cleanArg('textColor');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7865 this._classname = cleanArg('classname');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7866 this._tapeImage = cleanArg('tapeImage');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7867 this._tapeRepeat = cleanArg('tapeRepeat');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7868 this._trackNum = cleanArg('trackNum');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7869 if (this._trackNum != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7870 this._trackNum = parseInt(this._trackNum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7871 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7872
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7873 this._wikiURL = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7874 this._wikiSection = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7875 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7876
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7877 Timeline.DefaultEventSource.Event.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7878 getID: function() { return this._id; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7879
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7880 isInstant: function() { return this._instant; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7881 isImprecise: function() { return this._start != this._latestStart || this._end != this._earliestEnd; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7883 getStart: function() { return this._start; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7884 getEnd: function() { return this._end; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7885 getLatestStart: function() { return this._latestStart; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7886 getEarliestEnd: function() { return this._earliestEnd; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7887
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7888 getEventID: function() { return this._eventID; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7889 getText: function() { return this._text; }, // title
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7890 getDescription: function() { return this._description; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7891 getImage: function() { return this._image; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7892 getLink: function() { return this._link; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7893
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7894 getIcon: function() { return this._icon; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7895 getColor: function() { return this._color; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7896 getTextColor: function() { return this._textColor; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7897 getClassName: function() { return this._classname; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7898 getTapeImage: function() { return this._tapeImage; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7899 getTapeRepeat: function() { return this._tapeRepeat; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7900 getTrackNum: function() { return this._trackNum; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7901
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7902 getProperty: function(name) { return null; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7904 getWikiURL: function() { return this._wikiURL; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7905 getWikiSection: function() { return this._wikiSection; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7906 setWikiInfo: function(wikiURL, wikiSection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7907 this._wikiURL = wikiURL;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7908 this._wikiSection = wikiSection;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7909 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7910
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7911 fillDescription: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7912 elmt.innerHTML = this._description;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7913 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7914 fillWikiInfo: function(elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7915 // Many bubbles will not support a wiki link.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7916 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7917 // Strategy: assume no wiki link. If we do have
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7918 // enough parameters for one, then create it.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7919 elmt.style.display = "none"; // default
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7920
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7921 if (this._wikiURL == null || this._wikiSection == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7922 return; // EARLY RETURN
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7923 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7925 // create the wikiID from the property or from the event text (the title)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7926 var wikiID = this.getProperty("wikiID");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7927 if (wikiID == null || wikiID.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7928 wikiID = this.getText(); // use the title as the backup wiki id
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7929 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7930
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7931 if (wikiID == null || wikiID.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7932 return; // No wikiID. Thus EARLY RETURN
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7933 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7934
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7935 // ready to go...
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7936 elmt.style.display = "inline";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7937 wikiID = wikiID.replace(/\s/g, "_");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7938 var url = this._wikiURL + this._wikiSection.replace(/\s/g, "_") + "/" + wikiID;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7939 var a = document.createElement("a");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7940 a.href = url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7941 a.target = "new";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7942 a.innerHTML = Timeline.strings[Timeline.clientLocale].wikiLinkLabel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7943
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7944 elmt.appendChild(document.createTextNode("["));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7945 elmt.appendChild(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7946 elmt.appendChild(document.createTextNode("]"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7947 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7948
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7949 fillTime: function(elmt, labeller) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7950 if (this._instant) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7951 if (this.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7952 elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7953 elmt.appendChild(elmt.ownerDocument.createElement("br"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7954 elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._end)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7955 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7956 elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7957 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7958 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7959 if (this.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7960 elmt.appendChild(elmt.ownerDocument.createTextNode(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7961 labeller.labelPrecise(this._start) + " ~ " + labeller.labelPrecise(this._latestStart)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7962 elmt.appendChild(elmt.ownerDocument.createElement("br"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7963 elmt.appendChild(elmt.ownerDocument.createTextNode(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7964 labeller.labelPrecise(this._earliestEnd) + " ~ " + labeller.labelPrecise(this._end)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7965 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7966 elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._start)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7967 elmt.appendChild(elmt.ownerDocument.createElement("br"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7968 elmt.appendChild(elmt.ownerDocument.createTextNode(labeller.labelPrecise(this._end)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7969 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7970 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7971 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7972
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7973 fillInfoBubble: function(elmt, theme, labeller) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7974 var doc = elmt.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7975
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7976 var title = this.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7977 var link = this.getLink();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7978 var image = this.getImage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7979
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7980 if (image != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7981 var img = doc.createElement("img");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7982 img.src = image;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7983
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7984 theme.event.bubble.imageStyler(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7985 elmt.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7986 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7987
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7988 var divTitle = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7989 var textTitle = doc.createTextNode(title);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7990 if (link != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7991 var a = doc.createElement("a");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7992 a.href = link;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7993 a.appendChild(textTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7994 divTitle.appendChild(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7995 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7996 divTitle.appendChild(textTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7997 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7998 theme.event.bubble.titleStyler(divTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
7999 elmt.appendChild(divTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8000
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8001 var divBody = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8002 this.fillDescription(divBody);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8003 theme.event.bubble.bodyStyler(divBody);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8004 elmt.appendChild(divBody);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8005
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8006 var divTime = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8007 this.fillTime(divTime, labeller);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8008 theme.event.bubble.timeStyler(divTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8009 elmt.appendChild(divTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8010
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8011 var divWiki = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8012 this.fillWikiInfo(divWiki);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8013 theme.event.bubble.wikiStyler(divWiki);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8014 elmt.appendChild(divWiki);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8015 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8016 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8017
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8018
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8019 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8020 * Original Event Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8021 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8022 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8023
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8024 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8025 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8026 * To enable a single event listener to monitor everything
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8027 * on a Timeline, we need a way to map from an event's icon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8028 * label or tape element to the associated timeline, band and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8029 * specific event.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8030 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8031 * Thus a set format is used for the id's of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8032 * events' elements on the Timeline--
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8033 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8034 * element id format for labels, icons, tapes:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8035 * labels: label-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8036 * icons: icon-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8037 * tapes: tape1-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8038 * tape2-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8039 * // some events have more than one tape
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8040 * highlight: highlight1-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8041 * highlight2-tl-<timelineID>-<band_index>-<evt.id>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8042 * // some events have more than one highlight div (future)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8043 * You can then retrieve the band/timeline objects and event object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8044 * by using Timeline.EventUtils.decodeEventElID
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8045 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8046 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8047 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8048
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8049 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8050 * eventPaintListener functions receive calls about painting.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8051 * function(band, op, evt, els)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8052 * context: 'this' will be an OriginalEventPainter object.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8053 * It has properties and methods for obtaining
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8054 * the relevant band, timeline, etc
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8055 * band = the band being painted
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8056 * op = 'paintStarting' // the painter is about to remove
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8057 * all previously painted events, if any. It will
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8058 * then start painting all of the visible events that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8059 * pass the filter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8060 * evt = null, els = null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8061 * op = 'paintEnded' // the painter has finished painting
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8062 * all of the visible events that passed the filter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8063 * evt = null, els = null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8064 * op = 'paintedEvent' // the painter just finished painting an event
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8065 * evt = event just painted
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8066 * els = array of painted elements' divs. Depending on the event,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8067 * the array could be just a tape or icon (if no label).
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8068 * Or could include label, multiple tape divs (imprecise event),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8069 * highlight divs. The array is not ordered. The meaning of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8070 * each el is available by decoding the el's id
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8071 * Note that there may be no paintedEvent calls if no events were visible
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8072 * or passed the filter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8073 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8074
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8075 Timeline.OriginalEventPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8076 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8077 this._onSelectListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8078 this._eventPaintListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8079
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8080 this._filterMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8081 this._highlightMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8082 this._frc = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8083
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8084 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8085 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8086
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8087 Timeline.OriginalEventPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8088 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8089 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8090
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8091 this._backLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8092 this._eventLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8093 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8094 this._highlightLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8096 this._eventIdToElmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8097 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8098
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8099 Timeline.OriginalEventPainter.prototype.getType = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8100 return 'original';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8101 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8102
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8103 Timeline.OriginalEventPainter.prototype.addOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8104 this._onSelectListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8105 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8106
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8107 Timeline.OriginalEventPainter.prototype.removeOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8108 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8109 if (this._onSelectListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8110 this._onSelectListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8111 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8112 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8113 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8114 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8115
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8116 Timeline.OriginalEventPainter.prototype.addEventPaintListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8117 this._eventPaintListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8118 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8119
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8120 Timeline.OriginalEventPainter.prototype.removeEventPaintListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8121 for (var i = 0; i < this._eventPaintListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8122 if (this._eventPaintListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8123 this._eventPaintListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8124 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8125 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8126 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8127 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8128
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8129 Timeline.OriginalEventPainter.prototype.getFilterMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8130 return this._filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8131 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8133 Timeline.OriginalEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8134 this._filterMatcher = filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8135 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8136
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8137 Timeline.OriginalEventPainter.prototype.getHighlightMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8138 return this._highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8139 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8141 Timeline.OriginalEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8142 this._highlightMatcher = highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8143 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8144
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8145 Timeline.OriginalEventPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8146 // Paints the events for a given section of the band--what is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8147 // visible on screen and some extra.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8148 var eventSource = this._band.getEventSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8149 if (eventSource == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8150 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8151 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8152
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8153 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8154 this._fireEventPaintListeners('paintStarting', null, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8155 this._prepareForPainting();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8156
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8157 var eventTheme = this._params.theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8158 var trackHeight = Math.max(eventTheme.track.height, eventTheme.tape.height +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8159 this._frc.getLineHeight());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8160 var metrics = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8161 trackOffset: eventTheme.track.offset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8162 trackHeight: trackHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8163 trackGap: eventTheme.track.gap,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8164 trackIncrement: trackHeight + eventTheme.track.gap,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8165 icon: eventTheme.instant.icon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8166 iconWidth: eventTheme.instant.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8167 iconHeight: eventTheme.instant.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8168 labelWidth: eventTheme.label.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8169 maxLabelChar: eventTheme.label.maxLabelChar,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8170 impreciseIconMargin: eventTheme.instant.impreciseIconMargin
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8171 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8172
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8173 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8174 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8175
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8176 var filterMatcher = (this._filterMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8177 this._filterMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8178 function(evt) { return true; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8179 var highlightMatcher = (this._highlightMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8180 this._highlightMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8181 function(evt) { return -1; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8182
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8183 var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8184 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8185 var evt = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8186 if (filterMatcher(evt)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8187 this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8188 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8189 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8190
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8191 this._highlightLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8192 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8193 this._eventLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8194 // update the band object for max number of tracks in this section of the ether
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8195 this._band.updateEventTrackInfo(this._tracks.length, metrics.trackIncrement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8196 this._fireEventPaintListeners('paintEnded', null, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8197 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8198
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8199 Timeline.OriginalEventPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8200 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8201
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8202 Timeline.OriginalEventPainter.prototype._prepareForPainting = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8203 // Remove everything previously painted: highlight, line and event layers.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8204 // Prepare blank layers for painting.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8205 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8206
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8207 if (this._backLayer == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8208 this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8209 this._backLayer.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8210
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8211 var eventLabelPrototype = document.createElement("span");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8212 eventLabelPrototype.className = "timeline-event-label";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8213 this._backLayer.appendChild(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8214 this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8215 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8216 this._frc.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8217 this._tracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8218
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8219 if (this._highlightLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8220 band.removeLayerDiv(this._highlightLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8221 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8222 this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8223 this._highlightLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8224
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8225 if (this._lineLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8226 band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8227 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8228 this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8229 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8230
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8231 if (this._eventLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8232 band.removeLayerDiv(this._eventLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8233 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8234 this._eventLayer = band.createLayerDiv(115, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8235 this._eventLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8236 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8237
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8238 Timeline.OriginalEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8239 if (evt.isInstant()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8240 this.paintInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8241 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8242 this.paintDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8243 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8244 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8246 Timeline.OriginalEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8247 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8248 this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8249 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8250 this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8251 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8252 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8253
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8254 Timeline.OriginalEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8255 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8256 this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8257 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8258 this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8259 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8261
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8262 Timeline.OriginalEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8263 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8264 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8265
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8266 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8267 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8268 var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8269 var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8271 var labelDivClassName = this._getLabelDivClassName(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8272 var labelSize = this._frc.computeSize(text, labelDivClassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8273 var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8274 var labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8276 var rightEdge = labelRight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8277 var track = this._findFreeTrack(evt, rightEdge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8278
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8279 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8280 metrics.trackOffset + track * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8281 metrics.trackHeight / 2 - labelSize.height / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8282
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8283 var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8284 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8285 labelSize.height, theme, labelDivClassName, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8286 var els = [iconElmtData.elmt, labelElmtData.elmt];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8287
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8288 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8289 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8290 return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8291 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8292 SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8293 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8294
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8295 var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8296 if (hDiv != null) {els.push(hDiv);}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8297 this._fireEventPaintListeners('paintedEvent', evt, els);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8298
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8299
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8300 this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8301 this._tracks[track] = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8302 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8303
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8304 Timeline.OriginalEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8305 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8306 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8307
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8308 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8309 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8310 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8311 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8312
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8313 var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8314 var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8315
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8316 var labelDivClassName = this._getLabelDivClassName(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8317 var labelSize = this._frc.computeSize(text, labelDivClassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8318 var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8319 var labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8320
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8321 var rightEdge = Math.max(labelRight, endPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8322 var track = this._findFreeTrack(evt, rightEdge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8323 var tapeHeight = theme.event.tape.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8324 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8325 metrics.trackOffset + track * metrics.trackIncrement + tapeHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8326
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8327 var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, tapeHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8328 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8329 labelSize.height, theme, labelDivClassName, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8330
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8331 var color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8332 color = color != null ? color : theme.event.instant.impreciseColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8333
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8334 var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8335 color, theme.event.instant.impreciseOpacity, metrics, theme, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8336 var els = [iconElmtData.elmt, labelElmtData.elmt, tapeElmtData.elmt];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8338 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8339 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8340 return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8341 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8342 SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8343 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8344 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8345
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8346 var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8347 if (hDiv != null) {els.push(hDiv);}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8348 this._fireEventPaintListeners('paintedEvent', evt, els);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8349
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8350 this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8351 this._tracks[track] = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8352 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8353
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8354 Timeline.OriginalEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8355 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8356 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8357
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8358 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8359 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8360 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8361 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8362
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8363 var labelDivClassName = this._getLabelDivClassName(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8364 var labelSize = this._frc.computeSize(text, labelDivClassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8365 var labelLeft = startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8366 var labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8367
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8368 var rightEdge = Math.max(labelRight, endPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8369 var track = this._findFreeTrack(evt, rightEdge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8370 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8371 metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8372
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8373 var color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8374 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8375
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8376 var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel, color, 100, metrics, theme, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8377 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8378 labelSize.height, theme, labelDivClassName, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8379 var els = [tapeElmtData.elmt, labelElmtData.elmt];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8380
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8381 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8382 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8383 return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8384 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8385 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8386 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8387
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8388 var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8389 if (hDiv != null) {els.push(hDiv);}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8390 this._fireEventPaintListeners('paintedEvent', evt, els);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8391
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8392 this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8393 this._tracks[track] = startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8394 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8395
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8396 Timeline.OriginalEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8397 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8398 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8399
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8400 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8401 var latestStartDate = evt.getLatestStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8402 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8403 var earliestEndDate = evt.getEarliestEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8405 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8406 var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8407 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8408 var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8409
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8410 var labelDivClassName = this._getLabelDivClassName(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8411 var labelSize = this._frc.computeSize(text, labelDivClassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8412 var labelLeft = latestStartPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8413 var labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8414
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8415 var rightEdge = Math.max(labelRight, endPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8416 var track = this._findFreeTrack(evt, rightEdge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8417 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8418 metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8419
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8420 var color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8421 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8422
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8423 // Imprecise events can have two event tapes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8424 // The imprecise dates tape, uses opacity to be dimmer than precise dates
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8425 var impreciseTapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8426 theme.event.duration.impreciseColor,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8427 theme.event.duration.impreciseOpacity, metrics, theme, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8428 // The precise dates tape, regular (100%) opacity
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8429 var tapeElmtData = this._paintEventTape(evt, track, latestStartPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8430 earliestEndPixel, color, 100, metrics, theme, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8431
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8432 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8433 labelSize.width, labelSize.height, theme, labelDivClassName, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8434 var els = [impreciseTapeElmtData.elmt, tapeElmtData.elmt, labelElmtData.elmt];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8435
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8436 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8437 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8438 return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8439 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8440 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8441 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8442
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8443 var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8444 if (hDiv != null) {els.push(hDiv);}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8445 this._fireEventPaintListeners('paintedEvent', evt, els);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8446
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8447 this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8448 this._tracks[track] = startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8449 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8450
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8451 Timeline.OriginalEventPainter.prototype._encodeEventElID = function(elType, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8452 return Timeline.EventUtils.encodeEventElID(this._timeline, this._band, elType, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8453 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8454
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8455 Timeline.OriginalEventPainter.prototype._findFreeTrack = function(event, rightEdge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8456 var trackAttribute = event.getTrackNum();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8457 if (trackAttribute != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8458 return trackAttribute; // early return since event includes track number
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8459 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8460
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8461 // normal case: find an open track
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8462 for (var i = 0; i < this._tracks.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8463 var t = this._tracks[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8464 if (t > rightEdge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8465 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8466 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8467 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8468 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8469 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8470
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8471 Timeline.OriginalEventPainter.prototype._paintEventIcon = function(evt, iconTrack, left, metrics, theme, tapeHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8472 // If no tape, then paint the icon in the middle of the track.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8473 // If there is a tape, paint the icon below the tape + impreciseIconMargin
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8474 var icon = evt.getIcon();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8475 icon = icon != null ? icon : metrics.icon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8476
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8477 var top; // top of the icon
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8478 if (tapeHeight > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8479 top = metrics.trackOffset + iconTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8480 tapeHeight + metrics.impreciseIconMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8481 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8482 var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8483 metrics.trackHeight / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8484 top = Math.round(middle - metrics.iconHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8485 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8486 var img = SimileAjax.Graphics.createTranslucentImage(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8487 var iconDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8488 iconDiv.className = this._getElClassName('timeline-event-icon', evt, 'icon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8489 iconDiv.id = this._encodeEventElID('icon', evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8490 iconDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8491 iconDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8492 iconDiv.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8493
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8494 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8495 iconDiv.title = evt._title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8496
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8497 this._eventLayer.appendChild(iconDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8499 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8500 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8501 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8502 width: metrics.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8503 height: metrics.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8504 elmt: iconDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8505 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8506 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8507
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8508 Timeline.OriginalEventPainter.prototype._paintEventLabel = function(evt, text, left, top, width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8509 height, theme, labelDivClassName, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8510 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8511
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8512 var labelDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8513 labelDiv.className = labelDivClassName;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8514 labelDiv.id = this._encodeEventElID('label', evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8515 labelDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8516 labelDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8517 labelDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8518 labelDiv.innerHTML = text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8519
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8520 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8521 labelDiv.title = evt._title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8522
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8523 var color = evt.getTextColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8524 if (color == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8525 color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8526 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8527 if (color != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8528 labelDiv.style.color = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8529 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8530 if (theme.event.highlightLabelBackground && highlightIndex >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8531 labelDiv.style.background = this._getHighlightColor(highlightIndex, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8532 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8533
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8534 this._eventLayer.appendChild(labelDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8535
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8536 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8537 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8538 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8539 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8540 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8541 elmt: labelDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8542 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8543 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8544
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8545 Timeline.OriginalEventPainter.prototype._paintEventTape = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8546 evt, iconTrack, startPixel, endPixel, color, opacity, metrics, theme, tape_index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8548 var tapeWidth = endPixel - startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8549 var tapeHeight = theme.event.tape.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8550 var top = metrics.trackOffset + iconTrack * metrics.trackIncrement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8551
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8552 var tapeDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8553 tapeDiv.className = this._getElClassName('timeline-event-tape', evt, 'tape');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8554 tapeDiv.id = this._encodeEventElID('tape' + tape_index, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8555 tapeDiv.style.left = startPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8556 tapeDiv.style.width = tapeWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8557 tapeDiv.style.height = tapeHeight + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8558 tapeDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8559
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8560 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8561 tapeDiv.title = evt._title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8562
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8563 if(color != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8564 tapeDiv.style.backgroundColor = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8565 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8566
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8567 var backgroundImage = evt.getTapeImage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8568 var backgroundRepeat = evt.getTapeRepeat();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8569 backgroundRepeat = backgroundRepeat != null ? backgroundRepeat : 'repeat';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8570 if(backgroundImage != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8571 tapeDiv.style.backgroundImage = "url(" + backgroundImage + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8572 tapeDiv.style.backgroundRepeat = backgroundRepeat;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8573 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8574
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8575 SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8576
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8577 this._eventLayer.appendChild(tapeDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8578
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8579 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8580 left: startPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8581 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8582 width: tapeWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8583 height: tapeHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8584 elmt: tapeDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8585 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8586 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8587
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8588 Timeline.OriginalEventPainter.prototype._getLabelDivClassName = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8589 return this._getElClassName('timeline-event-label', evt, 'label');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8590 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8591
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8592 Timeline.OriginalEventPainter.prototype._getElClassName = function(elClassName, evt, prefix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8593 // Prefix and '_' is added to the event's classname. Set to null for no prefix
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8594 var evt_classname = evt.getClassName(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8595 pieces = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8596
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8597 if (evt_classname) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8598 if (prefix) {pieces.push(prefix + '-' + evt_classname + ' ');}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8599 pieces.push(evt_classname + ' ');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8600 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8601 pieces.push(elClassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8602 return(pieces.join(''));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8603 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8604
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8605 Timeline.OriginalEventPainter.prototype._getHighlightColor = function(highlightIndex, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8606 var highlightColors = theme.event.highlightColors;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8607 return highlightColors[Math.min(highlightIndex, highlightColors.length - 1)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8608 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8609
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8610 Timeline.OriginalEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8611 var div = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8612 if (highlightIndex >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8613 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8614 var color = this._getHighlightColor(highlightIndex, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8615
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8616 div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8617 div.className = this._getElClassName('timeline-event-highlight', evt, 'highlight');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8618 div.id = this._encodeEventElID('highlight0', evt); // in future will have other
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8619 // highlight divs for tapes + icons
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8620 div.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8621 div.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8622 div.style.left = (dimensions.left - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8623 div.style.width = (dimensions.width + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8624 div.style.top = (dimensions.top - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8625 div.style.height = (dimensions.height + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8626 div.style.background = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8627
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8628 this._highlightLayer.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8629 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8630 return div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8631 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8632
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8633 Timeline.OriginalEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8634 var c = SimileAjax.DOM.getPageCoordinates(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8635 this._showBubble(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8636 c.left + Math.ceil(icon.offsetWidth / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8637 c.top + Math.ceil(icon.offsetHeight / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8638 evt
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8639 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8640 this._fireOnSelect(evt.getID());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8641
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8642 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8643 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8644 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8645 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8646
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8647 Timeline.OriginalEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8648 if ("pageX" in domEvt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8649 var x = domEvt.pageX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8650 var y = domEvt.pageY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8651 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8652 var c = SimileAjax.DOM.getPageCoordinates(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8653 var x = domEvt.offsetX + c.left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8654 var y = domEvt.offsetY + c.top;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8655 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8656 this._showBubble(x, y, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8657 this._fireOnSelect(evt.getID());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8658
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8659 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8660 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8661 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8662 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8663
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8664 Timeline.OriginalEventPainter.prototype.showBubble = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8665 var elmt = this._eventIdToElmt[evt.getID()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8666 if (elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8667 var c = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8668 this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8669 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8670 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8671
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8672 Timeline.OriginalEventPainter.prototype._showBubble = function(x, y, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8673 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8674 var themeBubble = this._params.theme.event.bubble;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8675 evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8676
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8677 SimileAjax.WindowManager.cancelPopups();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8678 SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8679 themeBubble.width, null, themeBubble.maxHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8680 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8681
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8682 Timeline.OriginalEventPainter.prototype._fireOnSelect = function(eventID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8683 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8684 this._onSelectListeners[i](eventID);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8686 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8687
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8688 Timeline.OriginalEventPainter.prototype._fireEventPaintListeners = function(op, evt, els) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8689 for (var i = 0; i < this._eventPaintListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8690 this._eventPaintListeners[i](this._band, op, evt, els);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8691 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8692 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8693 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8694 * Detailed Event Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8695 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8696 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8697
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8698 // Note: a number of features from original-painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8699 // are not yet implemented in detailed painter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8700 // Eg classname, id attributes for icons, labels, tapes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8701
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8702 Timeline.DetailedEventPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8703 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8704 this._onSelectListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8705
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8706 this._filterMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8707 this._highlightMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8708 this._frc = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8709
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8710 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8711 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8712
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8713 Timeline.DetailedEventPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8714 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8715 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8716
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8717 this._backLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8718 this._eventLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8719 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8720 this._highlightLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8721
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8722 this._eventIdToElmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8723 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8724
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8725 Timeline.DetailedEventPainter.prototype.getType = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8726 return 'detailed';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8727 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8728
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8729 Timeline.DetailedEventPainter.prototype.addOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8730 this._onSelectListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8731 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8732
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8733 Timeline.DetailedEventPainter.prototype.removeOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8734 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8735 if (this._onSelectListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8736 this._onSelectListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8737 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8738 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8739 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8740 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8742 Timeline.DetailedEventPainter.prototype.getFilterMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8743 return this._filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8744 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8746 Timeline.DetailedEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8747 this._filterMatcher = filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8748 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8749
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8750 Timeline.DetailedEventPainter.prototype.getHighlightMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8751 return this._highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8752 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8753
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8754 Timeline.DetailedEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8755 this._highlightMatcher = highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8756 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8757
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8758 Timeline.DetailedEventPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8759 var eventSource = this._band.getEventSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8760 if (eventSource == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8761 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8762 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8763
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8764 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8765 this._prepareForPainting();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8766
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8767 var eventTheme = this._params.theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8768 var trackHeight = Math.max(eventTheme.track.height, this._frc.getLineHeight());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8769 var metrics = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8770 trackOffset: Math.round(this._band.getViewWidth() / 2 - trackHeight / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8771 trackHeight: trackHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8772 trackGap: eventTheme.track.gap,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8773 trackIncrement: trackHeight + eventTheme.track.gap,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8774 icon: eventTheme.instant.icon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8775 iconWidth: eventTheme.instant.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8776 iconHeight: eventTheme.instant.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8777 labelWidth: eventTheme.label.width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8778 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8780 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8781 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8783 var filterMatcher = (this._filterMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8784 this._filterMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8785 function(evt) { return true; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8786 var highlightMatcher = (this._highlightMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8787 this._highlightMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8788 function(evt) { return -1; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8789
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8790 var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8791 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8792 var evt = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8793 if (filterMatcher(evt)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8794 this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8795 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8796 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8797
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8798 this._highlightLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8799 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8800 this._eventLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8801 // update the band object for max number of tracks in this section of the ether
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8802 this._band.updateEventTrackInfo(this._lowerTracks.length + this._upperTracks.length,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8803 metrics.trackIncrement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8804 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8805
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8806 Timeline.DetailedEventPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8807 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8808
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8809 Timeline.DetailedEventPainter.prototype._prepareForPainting = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8810 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8811
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8812 if (this._backLayer == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8813 this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8814 this._backLayer.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8815
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8816 var eventLabelPrototype = document.createElement("span");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8817 eventLabelPrototype.className = "timeline-event-label";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8818 this._backLayer.appendChild(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8819 this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8820 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8821 this._frc.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8822 this._lowerTracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8823 this._upperTracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8824
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8825 if (this._highlightLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8826 band.removeLayerDiv(this._highlightLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8827 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8828 this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8829 this._highlightLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8830
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8831 if (this._lineLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8832 band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8833 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8834 this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8835 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8836
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8837 if (this._eventLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8838 band.removeLayerDiv(this._eventLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8839 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8840 this._eventLayer = band.createLayerDiv(110, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8841 this._eventLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8842 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8843
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8844 Timeline.DetailedEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8845 if (evt.isInstant()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8846 this.paintInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8847 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8848 this.paintDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8849 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8850 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8851
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8852 Timeline.DetailedEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8853 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8854 this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8855 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8856 this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8857 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8858 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8859
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8860 Timeline.DetailedEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8861 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8862 this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8863 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8864 this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8865 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8866 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8867
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8868 Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8869 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8870 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8871
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8872 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8873 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8874 var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8875 var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8876
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8877 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8878 var iconTrack = this._findFreeTrackForSolid(iconRightEdge, startPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8879 var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8880
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8881 var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8882 var labelTrack = iconTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8883
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8884 var iconTrackData = this._getTrackData(iconTrack);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8885 if (Math.min(iconTrackData.solid, iconTrackData.text) >= labelLeft + labelSize.width) { // label on the same track, to the right of icon
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8886 iconTrackData.solid = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8887 iconTrackData.text = labelLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8888 } else { // label on a different track, below icon
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8889 iconTrackData.solid = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8890
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8891 labelLeft = startPixel + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8892 labelTrack = this._findFreeTrackForText(iconTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8893 this._getTrackData(labelTrack).text = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8894
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8895 this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8896 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8897
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8898 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8899 metrics.trackOffset + labelTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8900 metrics.trackHeight / 2 - labelSize.height / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8901
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8902 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8904 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8905 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8906 return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8907 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8908 SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8909 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8910
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8911 this._createHighlightDiv(highlightIndex, iconElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8912
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8913 this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8914 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8916 Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8917 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8918 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8919
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8920 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8921 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8922 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8923 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8925 var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8926 var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8928 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8929 var iconTrack = this._findFreeTrackForSolid(endPixel, startPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8930
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8931 var tapeElmtData = this._paintEventTape(evt, iconTrack, startPixel, endPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8932 theme.event.instant.impreciseColor, theme.event.instant.impreciseOpacity, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8933 var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8934
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8935 var iconTrackData = this._getTrackData(iconTrack);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8936 iconTrackData.solid = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8937
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8938 var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8939 var labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8940 var labelTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8941 if (labelRight < endPixel) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8942 labelTrack = iconTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8943 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8944 labelLeft = startPixel + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8945 labelRight = labelLeft + labelSize.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8946
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8947 labelTrack = this._findFreeTrackForText(iconTrack, labelRight, function(t) { t.line = startPixel - 2; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8948 this._getTrackData(labelTrack).text = iconLeftEdge;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8949
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8950 this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8951 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8952 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8953 metrics.trackOffset + labelTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8954 metrics.trackHeight / 2 - labelSize.height / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8955
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8956 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8957
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8958 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8959 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8960 return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8961 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8962 SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8963 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8964 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8965
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8966 this._createHighlightDiv(highlightIndex, iconElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8967
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8968 this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8969 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8970
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8971 Timeline.DetailedEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8972 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8973 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8974
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8975 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8976 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8977 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8978 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8979
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8980 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8981 var tapeTrack = this._findFreeTrackForSolid(endPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8982 var color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8983 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8984
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8985 var tapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel, color, 100, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8986
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8987 var tapeTrackData = this._getTrackData(tapeTrack);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8988 tapeTrackData.solid = startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8989
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8990 var labelLeft = startPixel + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8991 var labelTrack = this._findFreeTrackForText(tapeTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8992 this._getTrackData(labelTrack).text = startPixel - 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8993
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8994 this._paintEventLine(evt, startPixel, tapeTrack, labelTrack, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8995
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8996 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8997 metrics.trackOffset + labelTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8998 metrics.trackHeight / 2 - labelSize.height / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
8999
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9000 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9002 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9003 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9004 return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9005 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9006 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9007 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9008
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9009 this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9010
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9011 this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9012 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9013
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9014 Timeline.DetailedEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9015 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9016 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9017
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9018 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9019 var latestStartDate = evt.getLatestStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9020 var endDate = evt.getEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9021 var earliestEndDate = evt.getEarliestEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9022
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9023 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9024 var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9025 var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9026 var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9028 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9029 var tapeTrack = this._findFreeTrackForSolid(endPixel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9030 var color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9031 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9032
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9033 var impreciseTapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9034 theme.event.duration.impreciseColor, theme.event.duration.impreciseOpacity, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9035 var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel, color, 100, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9036
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9037 var tapeTrackData = this._getTrackData(tapeTrack);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9038 tapeTrackData.solid = startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9039
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9040 var labelLeft = latestStartPixel + theme.event.label.offsetFromLine;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9041 var labelTrack = this._findFreeTrackForText(tapeTrack, labelLeft + labelSize.width, function(t) { t.line = latestStartPixel - 2; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9042 this._getTrackData(labelTrack).text = latestStartPixel - 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9043
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9044 this._paintEventLine(evt, latestStartPixel, tapeTrack, labelTrack, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9045
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9046 var labelTop = Math.round(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9047 metrics.trackOffset + labelTrack * metrics.trackIncrement +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9048 metrics.trackHeight / 2 - labelSize.height / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9049
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9050 var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9052 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9053 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9054 return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9055 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9056 SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9057 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9058
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9059 this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9060
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9061 this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9062 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9063
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9064 Timeline.DetailedEventPainter.prototype._findFreeTrackForSolid = function(solidEdge, softEdge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9065 for (var i = 0; true; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9066 if (i < this._lowerTracks.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9067 var t = this._lowerTracks[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9068 if (Math.min(t.solid, t.text) > solidEdge && (!(softEdge) || t.line > softEdge)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9069 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9070 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9071 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9072 this._lowerTracks.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9073 solid: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9074 text: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9075 line: Number.POSITIVE_INFINITY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9076 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9077
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9078 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9079 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9080
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9081 if (i < this._upperTracks.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9082 var t = this._upperTracks[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9083 if (Math.min(t.solid, t.text) > solidEdge && (!(softEdge) || t.line > softEdge)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9084 return -1 - i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9085 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9086 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9087 this._upperTracks.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9088 solid: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9089 text: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9090 line: Number.POSITIVE_INFINITY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9091 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9092
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9093 return -1 - i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9094 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9095 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9096 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9097
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9098 Timeline.DetailedEventPainter.prototype._findFreeTrackForText = function(fromTrack, edge, occupiedTrackVisitor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9099 var extendUp;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9100 var index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9101 var firstIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9102 var result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9103
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9104 if (fromTrack < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9105 extendUp = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9106 firstIndex = -fromTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9107
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9108 index = this._findFreeUpperTrackForText(firstIndex, edge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9109 result = -1 - index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9110 } else if (fromTrack > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9111 extendUp = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9112 firstIndex = fromTrack + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9113
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9114 index = this._findFreeLowerTrackForText(firstIndex, edge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9115 result = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9116 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9117 var upIndex = this._findFreeUpperTrackForText(0, edge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9118 var downIndex = this._findFreeLowerTrackForText(1, edge);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9119
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9120 if (downIndex - 1 <= upIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9121 extendUp = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9122 firstIndex = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9123 index = downIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9124 result = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9125 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9126 extendUp = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9127 firstIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9128 index = upIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9129 result = -1 - index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9130 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9131 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9133 if (extendUp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9134 if (index == this._upperTracks.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9135 this._upperTracks.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9136 solid: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9137 text: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9138 line: Number.POSITIVE_INFINITY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9139 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9140 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9141 for (var i = firstIndex; i < index; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9142 occupiedTrackVisitor(this._upperTracks[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9143 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9144 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9145 if (index == this._lowerTracks.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9146 this._lowerTracks.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9147 solid: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9148 text: Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9149 line: Number.POSITIVE_INFINITY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9150 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9151 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9152 for (var i = firstIndex; i < index; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9153 occupiedTrackVisitor(this._lowerTracks[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9154 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9155 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9156 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9157 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9158
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9159 Timeline.DetailedEventPainter.prototype._findFreeLowerTrackForText = function(index, edge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9160 for (; index < this._lowerTracks.length; index++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9161 var t = this._lowerTracks[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9162 if (Math.min(t.solid, t.text) >= edge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9163 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9164 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9165 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9166 return index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9167 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9168
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9169 Timeline.DetailedEventPainter.prototype._findFreeUpperTrackForText = function(index, edge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9170 for (; index < this._upperTracks.length; index++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9171 var t = this._upperTracks[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9172 if (Math.min(t.solid, t.text) >= edge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9173 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9174 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9175 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9176 return index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9177 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9178
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9179 Timeline.DetailedEventPainter.prototype._getTrackData = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9180 return (index < 0) ? this._upperTracks[-index - 1] : this._lowerTracks[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9181 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9182
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9183 Timeline.DetailedEventPainter.prototype._paintEventLine = function(evt, left, startTrack, endTrack, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9184 var top = Math.round(metrics.trackOffset + startTrack * metrics.trackIncrement + metrics.trackHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9185 var height = Math.round(Math.abs(endTrack - startTrack) * metrics.trackIncrement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9186
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9187 var lineStyle = "1px solid " + theme.event.label.lineColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9188 var lineDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9189 lineDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9190 lineDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9191 lineDiv.style.width = theme.event.label.offsetFromLine + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9192 lineDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9193 if (startTrack > endTrack) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9194 lineDiv.style.top = (top - height) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9195 lineDiv.style.borderTop = lineStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9196 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9197 lineDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9198 lineDiv.style.borderBottom = lineStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9199 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9200 lineDiv.style.borderLeft = lineStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9201 this._lineLayer.appendChild(lineDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9202 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9203
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9204 Timeline.DetailedEventPainter.prototype._paintEventIcon = function(evt, iconTrack, left, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9205 var icon = evt.getIcon();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9206 icon = icon != null ? icon : metrics.icon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9207
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9208 var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement + metrics.trackHeight / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9209 var top = Math.round(middle - metrics.iconHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9210
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9211 var img = SimileAjax.Graphics.createTranslucentImage(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9212 var iconDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9213 iconDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9214 iconDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9215 iconDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9216 iconDiv.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9217 iconDiv.style.cursor = "pointer";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9218
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9219 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9220 iconDiv.title = evt._title
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9222 this._eventLayer.appendChild(iconDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9223
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9224 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9225 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9226 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9227 width: metrics.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9228 height: metrics.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9229 elmt: iconDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9230 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9231 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9232
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9233 Timeline.DetailedEventPainter.prototype._paintEventLabel = function(evt, text, left, top, width, height, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9234 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9235
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9236 var labelBackgroundDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9237 labelBackgroundDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9238 labelBackgroundDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9239 labelBackgroundDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9240 labelBackgroundDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9241 labelBackgroundDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9242 labelBackgroundDiv.style.backgroundColor = theme.event.label.backgroundColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9243 SimileAjax.Graphics.setOpacity(labelBackgroundDiv, theme.event.label.backgroundOpacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9244 this._eventLayer.appendChild(labelBackgroundDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9246 var labelDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9247 labelDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9248 labelDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9249 labelDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9250 labelDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9251 labelDiv.innerHTML = text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9252 labelDiv.style.cursor = "pointer";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9253
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9254 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9255 labelDiv.title = evt._title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9256
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9257 var color = evt.getTextColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9258 if (color == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9259 color = evt.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9261 if (color != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9262 labelDiv.style.color = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9263 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9264
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9265 this._eventLayer.appendChild(labelDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9266
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9267 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9268 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9269 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9270 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9271 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9272 elmt: labelDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9273 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9274 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9276 Timeline.DetailedEventPainter.prototype._paintEventTape = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9277 evt, iconTrack, startPixel, endPixel, color, opacity, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9278
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9279 var tapeWidth = endPixel - startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9280 var tapeHeight = theme.event.tape.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9281 var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement + metrics.trackHeight / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9282 var top = Math.round(middle - tapeHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9283
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9284 var tapeDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9285 tapeDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9286 tapeDiv.style.left = startPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9287 tapeDiv.style.width = tapeWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9288 tapeDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9289 tapeDiv.style.height = tapeHeight + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9290 tapeDiv.style.backgroundColor = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9291 tapeDiv.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9292 tapeDiv.style.cursor = "pointer";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9293
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9294 if(evt._title != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9295 tapeDiv.title = evt._title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9296
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9297 SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9298
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9299 this._eventLayer.appendChild(tapeDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9300
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9301 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9302 left: startPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9303 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9304 width: tapeWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9305 height: tapeHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9306 elmt: tapeDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9307 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9308 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9309
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9310 Timeline.DetailedEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9311 if (highlightIndex >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9312 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9313 var eventTheme = theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9315 var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9316
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9317 var div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9318 div.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9319 div.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9320 div.style.left = (dimensions.left - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9321 div.style.width = (dimensions.width + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9322 div.style.top = (dimensions.top - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9323 div.style.height = (dimensions.height + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9324 div.style.background = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9325
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9326 this._highlightLayer.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9327 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9328 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9329
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9330 Timeline.DetailedEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9331 var c = SimileAjax.DOM.getPageCoordinates(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9332 this._showBubble(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9333 c.left + Math.ceil(icon.offsetWidth / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9334 c.top + Math.ceil(icon.offsetHeight / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9335 evt
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9336 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9337 this._fireOnSelect(evt.getID());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9338
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9339 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9340 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9341 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9342 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9343
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9344 Timeline.DetailedEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9345 if ("pageX" in domEvt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9346 var x = domEvt.pageX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9347 var y = domEvt.pageY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9348 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9349 var c = SimileAjax.DOM.getPageCoordinates(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9350 var x = domEvt.offsetX + c.left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9351 var y = domEvt.offsetY + c.top;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9352 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9353 this._showBubble(x, y, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9354 this._fireOnSelect(evt.getID());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9355
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9356 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9357 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9358 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9359 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9360
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9361 Timeline.DetailedEventPainter.prototype.showBubble = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9362 var elmt = this._eventIdToElmt[evt.getID()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9363 if (elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9364 var c = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9365 this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9366 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9367 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9369 Timeline.DetailedEventPainter.prototype._showBubble = function(x, y, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9370 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9371 var themeBubble = this._params.theme.event.bubble;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9372 evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9373
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9374 SimileAjax.WindowManager.cancelPopups();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9375 SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9376 themeBubble.width, null, themeBubble.maxHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9377 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9379 Timeline.DetailedEventPainter.prototype._fireOnSelect = function(eventID) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9380 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9381 this._onSelectListeners[i](eventID);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9382 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9383 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9384 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9385 * Overview Event Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9386 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9387 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9388
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9389 Timeline.OverviewEventPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9390 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9391 this._onSelectListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9392
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9393 this._filterMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9394 this._highlightMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9395 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9396
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9397 Timeline.OverviewEventPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9398 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9399 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9400
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9401 this._eventLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9402 this._highlightLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9403 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9405 Timeline.OverviewEventPainter.prototype.getType = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9406 return 'overview';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9407 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9408
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9409 Timeline.OverviewEventPainter.prototype.addOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9410 this._onSelectListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9411 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9412
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9413 Timeline.OverviewEventPainter.prototype.removeOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9414 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9415 if (this._onSelectListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9416 this._onSelectListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9417 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9418 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9419 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9420 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9421
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9422 Timeline.OverviewEventPainter.prototype.getFilterMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9423 return this._filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9424 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9425
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9426 Timeline.OverviewEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9427 this._filterMatcher = filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9428 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9429
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9430 Timeline.OverviewEventPainter.prototype.getHighlightMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9431 return this._highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9432 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9433
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9434 Timeline.OverviewEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9435 this._highlightMatcher = highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9436 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9437
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9438 Timeline.OverviewEventPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9439 var eventSource = this._band.getEventSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9440 if (eventSource == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9441 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9442 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9443
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9444 this._prepareForPainting();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9445
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9446 var eventTheme = this._params.theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9447 var metrics = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9448 trackOffset: eventTheme.overviewTrack.offset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9449 trackHeight: eventTheme.overviewTrack.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9450 trackGap: eventTheme.overviewTrack.gap,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9451 trackIncrement: eventTheme.overviewTrack.height + eventTheme.overviewTrack.gap
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9452 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9453
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9454 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9455 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9457 var filterMatcher = (this._filterMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9458 this._filterMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9459 function(evt) { return true; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9460 var highlightMatcher = (this._highlightMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9461 this._highlightMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9462 function(evt) { return -1; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9463
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9464 var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9465 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9466 var evt = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9467 if (filterMatcher(evt)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9468 this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9469 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9470 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9471
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9472 this._highlightLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9473 this._eventLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9474 // update the band object for max number of tracks in this section of the ether
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9475 this._band.updateEventTrackInfo(this._tracks.length, metrics.trackIncrement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9476 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9477
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9478 Timeline.OverviewEventPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9479 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9480
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9481 Timeline.OverviewEventPainter.prototype._prepareForPainting = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9482 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9483
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9484 this._tracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9485
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9486 if (this._highlightLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9487 band.removeLayerDiv(this._highlightLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9488 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9489 this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9490 this._highlightLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9491
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9492 if (this._eventLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9493 band.removeLayerDiv(this._eventLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9494 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9495 this._eventLayer = band.createLayerDiv(110, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9496 this._eventLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9497 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9499 Timeline.OverviewEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9500 if (evt.isInstant()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9501 this.paintInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9502 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9503 this.paintDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9504 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9505 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9507 Timeline.OverviewEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9508 var startDate = evt.getStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9509 var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9510
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9511 var color = evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9512 klassName = evt.getClassName();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9513 if (klassName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9514 color = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9515 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9516 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9517 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9518
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9519 var tickElmtData = this._paintEventTick(evt, startPixel, color, 100, metrics, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9520
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9521 this._createHighlightDiv(highlightIndex, tickElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9522 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9523
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9524 Timeline.OverviewEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9525 var latestStartDate = evt.getLatestStart();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9526 var earliestEndDate = evt.getEarliestEnd();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9527
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9528 var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9529 var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9530
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9531 var tapeTrack = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9532 for (; tapeTrack < this._tracks.length; tapeTrack++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9533 if (earliestEndPixel < this._tracks[tapeTrack]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9534 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9536 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9537 this._tracks[tapeTrack] = earliestEndPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9538
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9539 var color = evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9540 klassName = evt.getClassName();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9541 if (klassName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9542 color = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9543 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9544 color = color != null ? color : theme.event.duration.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9545 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9546
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9547 var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9548 color, 100, metrics, theme, klassName);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9549
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9550 this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9551 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9552
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9553 Timeline.OverviewEventPainter.prototype._paintEventTape = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9554 evt, track, left, right, color, opacity, metrics, theme, klassName) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9555
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9556 var top = metrics.trackOffset + track * metrics.trackIncrement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9557 var width = right - left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9558 var height = metrics.trackHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9559
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9560 var tapeDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9561 tapeDiv.className = 'timeline-small-event-tape'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9562 if (klassName) {tapeDiv.className += ' small-' + klassName;}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9563 tapeDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9564 tapeDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9565 tapeDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9566 tapeDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9567
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9568 if (color) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9569 tapeDiv.style.backgroundColor = color; // set color here if defined by event. Else use css
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9570 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9571 // tapeDiv.style.overflow = "hidden"; // now set in css
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9572 // tapeDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9573 if(opacity<100) SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9574
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9575 this._eventLayer.appendChild(tapeDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9576
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9577 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9578 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9579 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9580 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9581 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9582 elmt: tapeDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9583 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9584 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9586 Timeline.OverviewEventPainter.prototype._paintEventTick = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9587 evt, left, color, opacity, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9588
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9589 var height = theme.event.overviewTrack.tickHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9590 var top = metrics.trackOffset - height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9591 var width = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9592
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9593 var tickDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9594 tickDiv.className = 'timeline-small-event-icon'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9595 tickDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9596 tickDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9597 // tickDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9598 // tickDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9599 // tickDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9600 // tickDiv.style.backgroundColor = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9601 // tickDiv.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9602
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9603 var klassName = evt.getClassName()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9604 if (klassName) {tickDiv.className +=' small-' + klassName};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9605
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9606 if(opacity<100) {SimileAjax.Graphics.setOpacity(tickDiv, opacity)};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9608 this._eventLayer.appendChild(tickDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9609
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9610 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9611 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9612 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9613 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9614 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9615 elmt: tickDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9616 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9617 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9618
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9619 Timeline.OverviewEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9620 if (highlightIndex >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9621 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9622 var eventTheme = theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9623
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9624 var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9626 var div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9627 div.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9628 div.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9629 div.style.left = (dimensions.left - 1) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9630 div.style.width = (dimensions.width + 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9631 div.style.top = (dimensions.top - 1) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9632 div.style.height = (dimensions.height + 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9633 div.style.background = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9635 this._highlightLayer.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9636 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9637 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9638
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9639 Timeline.OverviewEventPainter.prototype.showBubble = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9640 // not implemented
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9641 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9642 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9643 * Original Event Painter
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9644 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9645 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9646
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9647 Timeline.CompactEventPainter = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9648 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9649 this._onSelectListeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9651 this._filterMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9652 this._highlightMatcher = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9653 this._frc = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9654
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9655 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9656 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9658 Timeline.CompactEventPainter.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9659 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9660 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9661
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9662 this._backLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9663 this._eventLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9664 this._lineLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9665 this._highlightLayer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9666
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9667 this._eventIdToElmt = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9668 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9669
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9670 Timeline.CompactEventPainter.prototype.addOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9671 this._onSelectListeners.push(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9672 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9673
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9674 Timeline.CompactEventPainter.prototype.removeOnSelectListener = function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9675 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9676 if (this._onSelectListeners[i] == listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9677 this._onSelectListeners.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9678 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9679 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9680 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9681 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9682
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9683 Timeline.CompactEventPainter.prototype.getFilterMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9684 return this._filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9685 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9686
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9687 Timeline.CompactEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9688 this._filterMatcher = filterMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9689 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9690
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9691 Timeline.CompactEventPainter.prototype.getHighlightMatcher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9692 return this._highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9693 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9694
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9695 Timeline.CompactEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9696 this._highlightMatcher = highlightMatcher;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9697 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9699 Timeline.CompactEventPainter.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9700 var eventSource = this._band.getEventSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9701 if (eventSource == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9702 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9703 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9704
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9705 this._eventIdToElmt = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9706 this._prepareForPainting();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9707
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9708 var theme = this._params.theme;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9709 var eventTheme = theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9710
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9711 var metrics = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9712 trackOffset: "trackOffset" in this._params ? this._params.trackOffset : 10,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9713 trackHeight: "trackHeight" in this._params ? this._params.trackHeight : 10,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9714
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9715 tapeHeight: theme.event.tape.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9716 tapeBottomMargin: "tapeBottomMargin" in this._params ? this._params.tapeBottomMargin : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9717
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9718 labelBottomMargin: "labelBottomMargin" in this._params ? this._params.labelBottomMargin : 5,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9719 labelRightMargin: "labelRightMargin" in this._params ? this._params.labelRightMargin : 5,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9720
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9721 defaultIcon: eventTheme.instant.icon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9722 defaultIconWidth: eventTheme.instant.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9723 defaultIconHeight: eventTheme.instant.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9724
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9725 customIconWidth: "iconWidth" in this._params ? this._params.iconWidth : eventTheme.instant.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9726 customIconHeight: "iconHeight" in this._params ? this._params.iconHeight : eventTheme.instant.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9728 iconLabelGap: "iconLabelGap" in this._params ? this._params.iconLabelGap : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9729 iconBottomMargin: "iconBottomMargin" in this._params ? this._params.iconBottomMargin : 2
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9730 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9731 if ("compositeIcon" in this._params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9732 metrics.compositeIcon = this._params.compositeIcon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9733 metrics.compositeIconWidth = this._params.compositeIconWidth || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9734 metrics.compositeIconHeight = this._params.compositeIconHeight || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9735 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9736 metrics.compositeIcon = metrics.defaultIcon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9737 metrics.compositeIconWidth = metrics.defaultIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9738 metrics.compositeIconHeight = metrics.defaultIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9739 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9740 metrics.defaultStackIcon = "icon" in this._params.stackConcurrentPreciseInstantEvents ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9741 this._params.stackConcurrentPreciseInstantEvents.icon : metrics.defaultIcon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9742 metrics.defaultStackIconWidth = "iconWidth" in this._params.stackConcurrentPreciseInstantEvents ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9743 this._params.stackConcurrentPreciseInstantEvents.iconWidth : metrics.defaultIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9744 metrics.defaultStackIconHeight = "iconHeight" in this._params.stackConcurrentPreciseInstantEvents ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9745 this._params.stackConcurrentPreciseInstantEvents.iconHeight : metrics.defaultIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9746
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9747 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9748 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9749
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9750 var filterMatcher = (this._filterMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9751 this._filterMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9752 function(evt) { return true; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9753
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9754 var highlightMatcher = (this._highlightMatcher != null) ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9755 this._highlightMatcher :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9756 function(evt) { return -1; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9757
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9758 var iterator = eventSource.getEventIterator(minDate, maxDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9759
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9760 var stackConcurrentPreciseInstantEvents = "stackConcurrentPreciseInstantEvents" in this._params && typeof this._params.stackConcurrentPreciseInstantEvents == "object";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9761 var collapseConcurrentPreciseInstantEvents = "collapseConcurrentPreciseInstantEvents" in this._params && this._params.collapseConcurrentPreciseInstantEvents;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9762 if (collapseConcurrentPreciseInstantEvents || stackConcurrentPreciseInstantEvents) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9763 var bufferedEvents = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9764 var previousInstantEvent = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9765
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9766 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9767 var evt = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9768 if (filterMatcher(evt)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9769 if (!evt.isInstant() || evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9770 this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9771 } else if (previousInstantEvent != null &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9772 previousInstantEvent.getStart().getTime() == evt.getStart().getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9773 bufferedEvents[bufferedEvents.length - 1].push(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9774 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9775 bufferedEvents.push([ evt ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9776 previousInstantEvent = evt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9778 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9779 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9781 for (var i = 0; i < bufferedEvents.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9782 var compositeEvents = bufferedEvents[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9783 if (compositeEvents.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9784 this.paintEvent(compositeEvents[0], metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9785 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9786 var match = -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9787 for (var j = 0; match < 0 && j < compositeEvents.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9788 match = highlightMatcher(compositeEvents[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9789 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9791 if (stackConcurrentPreciseInstantEvents) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9792 this.paintStackedPreciseInstantEvents(compositeEvents, metrics, this._params.theme, match);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9793 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9794 this.paintCompositePreciseInstantEvents(compositeEvents, metrics, this._params.theme, match);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9795 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9796 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9797 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9798 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9799 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9800 var evt = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9801 if (filterMatcher(evt)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9802 this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9803 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9804 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9805 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9806
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9807 this._highlightLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9808 this._lineLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9809 this._eventLayer.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9810 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9811
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9812 Timeline.CompactEventPainter.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9813 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9814
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9815 Timeline.CompactEventPainter.prototype._prepareForPainting = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9816 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9817
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9818 if (this._backLayer == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9819 this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9820 this._backLayer.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9821
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9822 var eventLabelPrototype = document.createElement("span");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9823 eventLabelPrototype.className = "timeline-event-label";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9824 this._backLayer.appendChild(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9825 this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9826 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9827 this._frc.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9828 this._tracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9829
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9830 if (this._highlightLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9831 band.removeLayerDiv(this._highlightLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9832 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9833 this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9834 this._highlightLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9835
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9836 if (this._lineLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9837 band.removeLayerDiv(this._lineLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9838 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9839 this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9840 this._lineLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9841
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9842 if (this._eventLayer != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9843 band.removeLayerDiv(this._eventLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9844 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9845 this._eventLayer = band.createLayerDiv(115, "timeline-band-events");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9846 this._eventLayer.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9847 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9848
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9849 Timeline.CompactEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9850 if (evt.isInstant()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9851 this.paintInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9852 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9853 this.paintDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9854 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9855 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9856
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9857 Timeline.CompactEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9858 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9859 this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9860 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9861 this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9864
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9865 Timeline.CompactEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9866 if (evt.isImprecise()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9867 this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9868 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9869 this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9870 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9871 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9872
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9873 Timeline.CompactEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9874 var commonData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9875 tooltip: evt.getProperty("tooltip") || evt.getText()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9876 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9877
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9878 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9879 url: evt.getIcon()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9880 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9881 if (iconData.url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9882 iconData.url = metrics.defaultIcon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9883 iconData.width = metrics.defaultIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9884 iconData.height = metrics.defaultIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9885 iconData.className = "timeline-event-icon-default";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9886 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9887 iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9888 iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9889 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9890
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9891 var labelData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9892 text: evt.getText(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9893 color: evt.getTextColor() || evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9894 className: evt.getClassName()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9895 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9896
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9897 var result = this.paintTapeIconLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9898 evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9899 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9900 null, // no tape data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9901 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9902 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9903 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9904 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9905 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9906 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9907
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9908 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9909 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9910 return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9911 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9912 SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9913 SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9915 this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9916 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9917
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9918 Timeline.CompactEventPainter.prototype.paintCompositePreciseInstantEvents = function(events, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9919 var evt = events[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9920
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9921 var tooltips = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9922 for (var i = 0; i < events.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9923 tooltips.push(events[i].getProperty("tooltip") || events[i].getText());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9924 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9925 var commonData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9926 tooltip: tooltips.join("; ")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9927 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9928
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9929 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9930 url: metrics.compositeIcon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9931 width: metrics.compositeIconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9932 height: metrics.compositeIconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9933 className: "timeline-event-icon-composite"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9934 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9935
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9936 var labelData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9937 text: String.substitute(this._params.compositeEventLabelTemplate, [ events.length ])
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9938 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9939
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9940 var result = this.paintTapeIconLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9941 evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9942 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9943 null, // no tape data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9944 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9945 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9946 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9947 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9948 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9949 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9950
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9951 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9952 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9953 return self._onClickMultiplePreciseInstantEvent(result.iconElmtData.elmt, domEvt, events);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9954 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9955
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9956 SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9957 SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9958
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9959 for (var i = 0; i < events.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9960 this._eventIdToElmt[events[i].getID()] = result.iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9961 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9962 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9963
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9964 Timeline.CompactEventPainter.prototype.paintStackedPreciseInstantEvents = function(events, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9965 var limit = "limit" in this._params.stackConcurrentPreciseInstantEvents ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9966 this._params.stackConcurrentPreciseInstantEvents.limit : 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9967 var moreMessageTemplate = "moreMessageTemplate" in this._params.stackConcurrentPreciseInstantEvents ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9968 this._params.stackConcurrentPreciseInstantEvents.moreMessageTemplate : "%0 More Events";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9969 var showMoreMessage = limit <= events.length - 2; // We want at least 2 more events above the limit.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9970 // Otherwise we'd need the singular case of "1 More Event"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9971
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9972 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9973 var getPixelOffset = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9974 return Math.round(band.dateToPixelOffset(date));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9975 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9976 var getIconData = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9977 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9978 url: evt.getIcon()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9979 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9980 if (iconData.url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9981 iconData.url = metrics.defaultStackIcon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9982 iconData.width = metrics.defaultStackIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9983 iconData.height = metrics.defaultStackIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9984 iconData.className = "timeline-event-icon-stack timeline-event-icon-default";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9985 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9986 iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9987 iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9988 iconData.className = "timeline-event-icon-stack";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9989 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9990 return iconData;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9991 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9992
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9993 var firstIconData = getIconData(events[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9994 var horizontalIncrement = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9995 var leftIconEdge = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9996 var totalLabelWidth = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9997 var totalLabelHeight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9998 var totalIconHeight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
9999
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10000 var records = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10001 for (var i = 0; i < events.length && (!showMoreMessage || i < limit); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10002 var evt = events[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10003 var text = evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10004 var iconData = getIconData(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10005 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10006 var record = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10007 text: text,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10008 iconData: iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10009 labelSize: labelSize,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10010 iconLeft: firstIconData.width + i * horizontalIncrement - iconData.width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10011 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10012 record.labelLeft = firstIconData.width + i * horizontalIncrement + metrics.iconLabelGap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10013 record.top = totalLabelHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10014 records.push(record);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10015
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10016 leftIconEdge = Math.min(leftIconEdge, record.iconLeft);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10017 totalLabelHeight += labelSize.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10018 totalLabelWidth = Math.max(totalLabelWidth, record.labelLeft + labelSize.width);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10019 totalIconHeight = Math.max(totalIconHeight, record.top + iconData.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10020 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10021 if (showMoreMessage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10022 var moreMessage = String.substitute(moreMessageTemplate, [ events.length - limit ]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10023
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10024 var moreMessageLabelSize = this._frc.computeSize(moreMessage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10025 var moreMessageLabelLeft = firstIconData.width + (limit - 1) * horizontalIncrement + metrics.iconLabelGap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10026 var moreMessageLabelTop = totalLabelHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10028 totalLabelHeight += moreMessageLabelSize.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10029 totalLabelWidth = Math.max(totalLabelWidth, moreMessageLabelLeft + moreMessageLabelSize.width);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10030 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10031 totalLabelWidth += metrics.labelRightMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10032 totalLabelHeight += metrics.labelBottomMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10033 totalIconHeight += metrics.iconBottomMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10034
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10035 var anchorPixel = getPixelOffset(events[0].getStart());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10036 var newTracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10037
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10038 var trackCount = Math.ceil(Math.max(totalIconHeight, totalLabelHeight) / metrics.trackHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10039 var rightIconEdge = firstIconData.width + (events.length - 1) * horizontalIncrement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10040 for (var i = 0; i < trackCount; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10041 newTracks.push({ start: leftIconEdge, end: rightIconEdge });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10042 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10043 var labelTrackCount = Math.ceil(totalLabelHeight / metrics.trackHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10044 for (var i = 0; i < labelTrackCount; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10045 var track = newTracks[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10046 track.end = Math.max(track.end, totalLabelWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10047 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10048
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10049 var firstTrack = this._fitTracks(anchorPixel, newTracks);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10050 var verticalPixelOffset = firstTrack * metrics.trackHeight + metrics.trackOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10052 var iconStackDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10053 iconStackDiv.className = 'timeline-event-icon-stack';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10054 iconStackDiv.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10055 iconStackDiv.style.overflow = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10056 iconStackDiv.style.left = anchorPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10057 iconStackDiv.style.top = verticalPixelOffset + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10058 iconStackDiv.style.width = rightIconEdge + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10059 iconStackDiv.style.height = totalIconHeight + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10060 iconStackDiv.innerHTML = "<div style='position: relative'></div>";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10061 this._eventLayer.appendChild(iconStackDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10062
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10063 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10064 var onMouseOver = function(domEvt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10065 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10066 var n = parseInt(this.getAttribute("index"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10067 var childNodes = iconStackDiv.firstChild.childNodes;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10068 for (var i = 0; i < childNodes.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10069 var child = childNodes[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10070 if (i == n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10071 child.style.zIndex = childNodes.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10072 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10073 child.style.zIndex = childNodes.length - i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10074 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10075 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10076 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10077 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10078 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10079 var paintEvent = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10080 var record = records[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10081 var evt = events[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10082 var tooltip = evt.getProperty("tooltip") || evt.getText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10083
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10084 var labelElmtData = self._paintEventLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10085 { tooltip: tooltip },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10086 { text: record.text },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10087 anchorPixel + record.labelLeft,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10088 verticalPixelOffset + record.top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10089 record.labelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10090 record.labelSize.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10091 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10092 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10093 labelElmtData.elmt.setAttribute("index", index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10094 labelElmtData.elmt.onmouseover = onMouseOver;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10096 var img = SimileAjax.Graphics.createTranslucentImage(record.iconData.url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10097 var iconDiv = self._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10098 iconDiv.className = 'timeline-event-icon' + ("className" in record.iconData ? (" " + record.iconData.className) : "");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10099 iconDiv.style.left = record.iconLeft + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10100 iconDiv.style.top = record.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10101 iconDiv.style.zIndex = (records.length - index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10102 iconDiv.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10103 iconDiv.setAttribute("index", index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10104 iconDiv.onmouseover = onMouseOver;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10105
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10106 iconStackDiv.firstChild.appendChild(iconDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10107
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10108 var clickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10109 return self._onClickInstantEvent(labelElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10110 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10112 SimileAjax.DOM.registerEvent(iconDiv, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10113 SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10114
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10115 self._eventIdToElmt[evt.getID()] = iconDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10116 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10117 for (var i = 0; i < records.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10118 paintEvent(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10120
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10121 if (showMoreMessage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10122 var moreEvents = events.slice(limit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10123 var moreMessageLabelElmtData = this._paintEventLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10124 { tooltip: moreMessage },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10125 { text: moreMessage },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10126 anchorPixel + moreMessageLabelLeft,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10127 verticalPixelOffset + moreMessageLabelTop,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10128 moreMessageLabelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10129 moreMessageLabelSize.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10130 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10131 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10133 var moreMessageClickHandler = function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10134 return self._onClickMultiplePreciseInstantEvent(moreMessageLabelElmtData.elmt, domEvt, moreEvents);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10135 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10136 SimileAjax.DOM.registerEvent(moreMessageLabelElmtData.elmt, "mousedown", moreMessageClickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10137
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10138 for (var i = 0; i < moreEvents.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10139 this._eventIdToElmt[moreEvents[i].getID()] = moreMessageLabelElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10140 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10141 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10142 //this._createHighlightDiv(highlightIndex, iconElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10143 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10144
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10145 Timeline.CompactEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10146 var commonData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10147 tooltip: evt.getProperty("tooltip") || evt.getText()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10148 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10149
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10150 var tapeData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10151 start: evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10152 end: evt.getEnd(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10153 latestStart: evt.getLatestStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10154 earliestEnd: evt.getEarliestEnd(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10155 isInstant: true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10156 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10157
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10158 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10159 url: evt.getIcon()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10160 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10161 if (iconData.url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10162 iconData = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10163 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10164 iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10165 iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10166 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10167
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10168 var labelData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10169 text: evt.getText(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10170 color: evt.getTextColor() || evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10171 className: evt.getClassName()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10172 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10173
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10174 var result = this.paintTapeIconLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10175 evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10176 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10177 tapeData, // no tape data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10178 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10179 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10180 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10181 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10182 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10183 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10184
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10185 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10186 var clickHandler = iconData != null ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10187 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10188 return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10189 } :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10190 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10191 return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10192 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10193
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10194 SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10195 SimileAjax.DOM.registerEvent(result.impreciseTapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10196
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10197 if (iconData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10198 SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10199 this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10200 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10201 this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10202 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10203 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10204
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10205 Timeline.CompactEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10206 var commonData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10207 tooltip: evt.getProperty("tooltip") || evt.getText()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10208 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10209
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10210 var tapeData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10211 start: evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10212 end: evt.getEnd(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10213 isInstant: false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10214 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10215
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10216 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10217 url: evt.getIcon()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10218 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10219 if (iconData.url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10220 iconData = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10221 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10222 iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10223 iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10224 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10225
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10226 var labelData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10227 text: evt.getText(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10228 color: evt.getTextColor() || evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10229 className: evt.getClassName()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10230 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10231
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10232 var result = this.paintTapeIconLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10233 evt.getLatestStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10234 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10235 tapeData, // no tape data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10236 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10237 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10238 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10239 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10240 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10241 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10242
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10243 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10244 var clickHandler = iconData != null ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10245 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10246 return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10247 } :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10248 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10249 return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10250 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10251
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10252 SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10253 SimileAjax.DOM.registerEvent(result.tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10254
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10255 if (iconData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10256 SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10257 this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10258 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10259 this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10261 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10262
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10263 Timeline.CompactEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10264 var commonData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10265 tooltip: evt.getProperty("tooltip") || evt.getText()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10266 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10267
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10268 var tapeData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10269 start: evt.getStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10270 end: evt.getEnd(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10271 latestStart: evt.getLatestStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10272 earliestEnd: evt.getEarliestEnd(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10273 isInstant: false
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10274 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10276 var iconData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10277 url: evt.getIcon()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10278 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10279 if (iconData.url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10280 iconData = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10281 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10282 iconData.width = evt.getProperty("iconWidth") || metrics.customIconWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10283 iconData.height = evt.getProperty("iconHeight") || metrics.customIconHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10284 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10285
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10286 var labelData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10287 text: evt.getText(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10288 color: evt.getTextColor() || evt.getColor(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10289 className: evt.getClassName()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10290 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10291
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10292 var result = this.paintTapeIconLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10293 evt.getLatestStart(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10294 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10295 tapeData, // no tape data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10296 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10297 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10298 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10299 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10300 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10301 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10302
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10303 var self = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10304 var clickHandler = iconData != null ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10305 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10306 return self._onClickInstantEvent(result.iconElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10307 } :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10308 function(elmt, domEvt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10309 return self._onClickInstantEvent(result.labelElmtData.elmt, domEvt, evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10310 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10311
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10312 SimileAjax.DOM.registerEvent(result.labelElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10313 SimileAjax.DOM.registerEvent(result.tapeElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10315 if (iconData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10316 SimileAjax.DOM.registerEvent(result.iconElmtData.elmt, "mousedown", clickHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10317 this._eventIdToElmt[evt.getID()] = result.iconElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10318 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10319 this._eventIdToElmt[evt.getID()] = result.labelElmtData.elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10320 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10321 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10322
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10323 Timeline.CompactEventPainter.prototype.paintTapeIconLabel = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10324 anchorDate,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10325 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10326 tapeData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10327 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10328 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10329 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10330 theme,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10331 highlightIndex
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10332 ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10333 var band = this._band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10334 var getPixelOffset = function(date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10335 return Math.round(band.dateToPixelOffset(date));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10336 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10338 var anchorPixel = getPixelOffset(anchorDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10339 var newTracks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10340
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10341 var tapeHeightOccupied = 0; // how many pixels (vertically) the tape occupies, including bottom margin
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10342 var tapeTrackCount = 0; // how many tracks the tape takes up, usually just 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10343 var tapeLastTrackExtraSpace = 0; // on the last track that the tape occupies, how many pixels are left (for icon and label to occupy as well)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10344 if (tapeData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10345 tapeHeightOccupied = metrics.tapeHeight + metrics.tapeBottomMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10346 tapeTrackCount = Math.ceil(metrics.tapeHeight / metrics.trackHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10347
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10348 var tapeEndPixelOffset = getPixelOffset(tapeData.end) - anchorPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10349 var tapeStartPixelOffset = getPixelOffset(tapeData.start) - anchorPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10350
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10351 for (var t = 0; t < tapeTrackCount; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10352 newTracks.push({ start: tapeStartPixelOffset, end: tapeEndPixelOffset });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10353 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10354
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10355 tapeLastTrackExtraSpace = metrics.trackHeight - (tapeHeightOccupied % metrics.tapeHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10356 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10357
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10358 var iconStartPixelOffset = 0; // where the icon starts compared to the anchor pixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10359 // this can be negative if the icon is center-aligned around the anchor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10360 var iconHorizontalSpaceOccupied = 0; // how many pixels the icon take up from the anchor pixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10361 // including the gap between the icon and the label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10362 if (iconData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10363 if ("iconAlign" in iconData && iconData.iconAlign == "center") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10364 iconStartPixelOffset = -Math.floor(iconData.width / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10365 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10366 iconHorizontalSpaceOccupied = iconStartPixelOffset + iconData.width + metrics.iconLabelGap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10367
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10368 if (tapeTrackCount > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10369 newTracks[tapeTrackCount - 1].end = Math.max(newTracks[tapeTrackCount - 1].end, iconHorizontalSpaceOccupied);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10370 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10371
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10372 var iconHeight = iconData.height + metrics.iconBottomMargin + tapeLastTrackExtraSpace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10373 while (iconHeight > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10374 newTracks.push({ start: iconStartPixelOffset, end: iconHorizontalSpaceOccupied });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10375 iconHeight -= metrics.trackHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10376 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10377 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10379 var text = labelData.text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10380 var labelSize = this._frc.computeSize(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10381 var labelHeight = labelSize.height + metrics.labelBottomMargin + tapeLastTrackExtraSpace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10382 var labelEndPixelOffset = iconHorizontalSpaceOccupied + labelSize.width + metrics.labelRightMargin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10383 if (tapeTrackCount > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10384 newTracks[tapeTrackCount - 1].end = Math.max(newTracks[tapeTrackCount - 1].end, labelEndPixelOffset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10385 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10386 for (var i = 0; labelHeight > 0; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10387 if (tapeTrackCount + i < newTracks.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10388 var track = newTracks[tapeTrackCount + i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10389 track.end = labelEndPixelOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10390 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10391 newTracks.push({ start: 0, end: labelEndPixelOffset });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10392 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10393 labelHeight -= metrics.trackHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10394 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10395
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10396 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10397 * Try to fit the new track on top of the existing tracks, then
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10398 * render the various elements.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10399 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10400 var firstTrack = this._fitTracks(anchorPixel, newTracks);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10401 var verticalPixelOffset = firstTrack * metrics.trackHeight + metrics.trackOffset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10402 var result = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10403
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10404 result.labelElmtData = this._paintEventLabel(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10405 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10406 labelData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10407 anchorPixel + iconHorizontalSpaceOccupied,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10408 verticalPixelOffset + tapeHeightOccupied,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10409 labelSize.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10410 labelSize.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10411 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10412 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10413
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10414 if (tapeData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10415 if ("latestStart" in tapeData || "earliestEnd" in tapeData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10416 result.impreciseTapeElmtData = this._paintEventTape(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10417 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10418 tapeData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10419 metrics.tapeHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10420 verticalPixelOffset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10421 getPixelOffset(tapeData.start),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10422 getPixelOffset(tapeData.end),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10423 theme.event.duration.impreciseColor,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10424 theme.event.duration.impreciseOpacity,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10425 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10426 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10427 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10429 if (!tapeData.isInstant && "start" in tapeData && "end" in tapeData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10430 result.tapeElmtData = this._paintEventTape(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10431 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10432 tapeData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10433 metrics.tapeHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10434 verticalPixelOffset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10435 anchorPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10436 getPixelOffset("earliestEnd" in tapeData ? tapeData.earliestEnd : tapeData.end),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10437 tapeData.color,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10438 100,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10439 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10440 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10441 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10442 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10443 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10444
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10445 if (iconData != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10446 result.iconElmtData = this._paintEventIcon(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10447 commonData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10448 iconData,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10449 verticalPixelOffset + tapeHeightOccupied,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10450 anchorPixel + iconStartPixelOffset,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10451 metrics,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10452 theme
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10453 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10454 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10455 //this._createHighlightDiv(highlightIndex, iconElmtData, theme);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10457 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10458 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10459
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10460 Timeline.CompactEventPainter.prototype._fitTracks = function(anchorPixel, newTracks) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10461 var firstTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10462 for (firstTrack = 0; firstTrack < this._tracks.length; firstTrack++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10463 var fit = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10464 for (var j = 0; j < newTracks.length && (firstTrack + j) < this._tracks.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10465 var existingTrack = this._tracks[firstTrack + j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10466 var newTrack = newTracks[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10467 if (anchorPixel + newTrack.start < existingTrack) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10468 fit = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10469 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10470 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10471 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10472
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10473 if (fit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10474 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10475 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10476 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10477 for (var i = 0; i < newTracks.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10478 this._tracks[firstTrack + i] = anchorPixel + newTracks[i].end;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10479 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10480
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10481 return firstTrack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10482 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10483
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10484
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10485 Timeline.CompactEventPainter.prototype._paintEventIcon = function(commonData, iconData, top, left, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10486 var img = SimileAjax.Graphics.createTranslucentImage(iconData.url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10487 var iconDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10488 iconDiv.className = 'timeline-event-icon' + ("className" in iconData ? (" " + iconData.className) : "");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10489 iconDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10490 iconDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10491 iconDiv.appendChild(img);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10492
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10493 if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10494 iconDiv.title = commonData.tooltip;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10495 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10496
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10497 this._eventLayer.appendChild(iconDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10499 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10500 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10501 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10502 width: metrics.iconWidth,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10503 height: metrics.iconHeight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10504 elmt: iconDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10505 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10506 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10507
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10508 Timeline.CompactEventPainter.prototype._paintEventLabel = function(commonData, labelData, left, top, width, height, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10509 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10510
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10511 var labelDiv = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10512 labelDiv.className = 'timeline-event-label';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10513
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10514 labelDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10515 labelDiv.style.width = (width + 1) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10516 labelDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10517 labelDiv.innerHTML = labelData.text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10518
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10519 if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10520 labelDiv.title = commonData.tooltip;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10521 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10522 if ("color" in labelData && typeof labelData.color == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10523 labelDiv.style.color = labelData.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10524 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10525 if ("className" in labelData && typeof labelData.className == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10526 labelDiv.className += ' ' + labelData.className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10527 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10528
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10529 this._eventLayer.appendChild(labelDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10530
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10531 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10532 left: left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10533 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10534 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10535 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10536 elmt: labelDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10537 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10538 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10539
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10540 Timeline.CompactEventPainter.prototype._paintEventTape = function(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10541 commonData, tapeData, height, top, startPixel, endPixel, color, opacity, metrics, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10542
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10543 var width = endPixel - startPixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10544
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10545 var tapeDiv = this._timeline.getDocument().createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10546 tapeDiv.className = "timeline-event-tape"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10548 tapeDiv.style.left = startPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10549 tapeDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10550 tapeDiv.style.width = width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10551 tapeDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10552
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10553 if ("tooltip" in commonData && typeof commonData.tooltip == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10554 tapeDiv.title = commonData.tooltip;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10556 if (color != null && typeof tapeData.color == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10557 tapeDiv.style.backgroundColor = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10558 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10559
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10560 if ("backgroundImage" in tapeData && typeof tapeData.backgroundImage == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10561 tapeDiv.style.backgroundImage = "url(" + backgroundImage + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10562 tapeDiv.style.backgroundRepeat =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10563 ("backgroundRepeat" in tapeData && typeof tapeData.backgroundRepeat == "string")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10564 ? tapeData.backgroundRepeat : 'repeat';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10565 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10566
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10567 SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10568
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10569 if ("className" in tapeData && typeof tapeData.className == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10570 tapeDiv.className += ' ' + tapeData.className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10571 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10572
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10573 this._eventLayer.appendChild(tapeDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10574
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10575 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10576 left: startPixel,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10577 top: top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10578 width: width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10579 height: height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10580 elmt: tapeDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10581 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10582 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10584 Timeline.CompactEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10585 if (highlightIndex >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10586 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10587 var eventTheme = theme.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10588
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10589 var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10590
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10591 var div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10592 div.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10593 div.style.overflow = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10594 div.style.left = (dimensions.left - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10595 div.style.width = (dimensions.width + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10596 div.style.top = (dimensions.top - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10597 div.style.height = (dimensions.height + 4) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10598 // div.style.background = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10599
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10600 this._highlightLayer.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10601 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10602 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10603
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10604 Timeline.CompactEventPainter.prototype._onClickMultiplePreciseInstantEvent = function(icon, domEvt, events) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10605 var c = SimileAjax.DOM.getPageCoordinates(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10606 this._showBubble(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10607 c.left + Math.ceil(icon.offsetWidth / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10608 c.top + Math.ceil(icon.offsetHeight / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10609 events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10610 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10611
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10612 var ids = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10613 for (var i = 0; i < events.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10614 ids.push(events[i].getID());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10615 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10616 this._fireOnSelect(ids);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10618 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10619 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10620
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10621 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10622 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10623
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10624 Timeline.CompactEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10625 var c = SimileAjax.DOM.getPageCoordinates(icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10626 this._showBubble(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10627 c.left + Math.ceil(icon.offsetWidth / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10628 c.top + Math.ceil(icon.offsetHeight / 2),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10629 [evt]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10630 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10631 this._fireOnSelect([evt.getID()]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10632
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10633 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10634 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10635 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10636 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10637
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10638 Timeline.CompactEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10639 if ("pageX" in domEvt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10640 var x = domEvt.pageX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10641 var y = domEvt.pageY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10642 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10643 var c = SimileAjax.DOM.getPageCoordinates(target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10644 var x = domEvt.offsetX + c.left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10645 var y = domEvt.offsetY + c.top;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10646 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10647 this._showBubble(x, y, [evt]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10648 this._fireOnSelect([evt.getID()]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10649
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10650 domEvt.cancelBubble = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10651 SimileAjax.DOM.cancelEvent(domEvt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10652 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10653 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10654
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10655 Timeline.CompactEventPainter.prototype.showBubble = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10656 var elmt = this._eventIdToElmt[evt.getID()];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10657 if (elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10658 var c = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10659 this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, [evt]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10660 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10661 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10662
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10663 Timeline.CompactEventPainter.prototype._showBubble = function(x, y, evts) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10664 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10665
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10666 evts = ("fillInfoBubble" in evts) ? [evts] : evts;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10667 for (var i = 0; i < evts.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10668 var div2 = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10669 div.appendChild(div2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10670
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10671 evts[i].fillInfoBubble(div2, this._params.theme, this._band.getLabeller());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10672 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10673
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10674 SimileAjax.WindowManager.cancelPopups();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10675 SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y, this._params.theme.event.bubble.width);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10676 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10677
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10678 Timeline.CompactEventPainter.prototype._fireOnSelect = function(eventIDs) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10679 for (var i = 0; i < this._onSelectListeners.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10680 this._onSelectListeners[i](eventIDs);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10681 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10682 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10683 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10684 * Span Highlight Decorator
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10685 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10686 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10687
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10688 Timeline.SpanHighlightDecorator = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10689 // When evaluating params, test against null. Not "p in params". Testing against
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10690 // null enables caller to explicitly request the default. Testing against "in" means
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10691 // that the param has to be ommitted to get the default.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10692 this._unit = params.unit != null ? params.unit : SimileAjax.NativeDateUnit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10693 this._startDate = (typeof params.startDate == "string") ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10694 this._unit.parseFromObject(params.startDate) : params.startDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10695 this._endDate = (typeof params.endDate == "string") ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10696 this._unit.parseFromObject(params.endDate) : params.endDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10697 this._startLabel = params.startLabel != null ? params.startLabel : ""; // not null!
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10698 this._endLabel = params.endLabel != null ? params.endLabel : ""; // not null!
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10699 this._color = params.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10700 this._cssClass = params.cssClass != null ? params.cssClass : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10701 this._opacity = params.opacity != null ? params.opacity : 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10702 // Default z is 10, behind everything but background grid.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10703 // If inFront, then place just behind events, in front of everything else
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10704 this._zIndex = (params.inFront != null && params.inFront) ? 113 : 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10705 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10706
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10707 Timeline.SpanHighlightDecorator.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10708 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10709 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10710
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10711 this._layerDiv = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10712 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10713
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10714 Timeline.SpanHighlightDecorator.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10715 if (this._layerDiv != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10716 this._band.removeLayerDiv(this._layerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10717 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10718 this._layerDiv = this._band.createLayerDiv(this._zIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10719 this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10720 this._layerDiv.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10721
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10722 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10723 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10724
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10725 if (this._unit.compare(this._startDate, maxDate) < 0 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10726 this._unit.compare(this._endDate, minDate) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10728 minDate = this._unit.later(minDate, this._startDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10729 maxDate = this._unit.earlier(maxDate, this._endDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10730
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10731 var minPixel = this._band.dateToPixelOffset(minDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10732 var maxPixel = this._band.dateToPixelOffset(maxDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10733
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10734 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10735
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10736 var createTable = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10737 var table = doc.createElement("table");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10738 table.insertRow(0).insertCell(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10739 return table;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10740 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10742 var div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10743 div.className='timeline-highlight-decorator'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10744 if(this._cssClass) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10745 div.className += ' ' + this._cssClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10746 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10747 if(this._color != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10748 div.style.backgroundColor = this._color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10749 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10750 if (this._opacity < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10751 SimileAjax.Graphics.setOpacity(div, this._opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10752 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10753 this._layerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10754
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10755 var tableStartLabel = createTable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10756 tableStartLabel.className = 'timeline-highlight-label timeline-highlight-label-start'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10757 var tdStart = tableStartLabel.rows[0].cells[0]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10758 tdStart.innerHTML = this._startLabel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10759 if (this._cssClass) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10760 tdStart.className = 'label_' + this._cssClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10761 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10762 this._layerDiv.appendChild(tableStartLabel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10763
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10764 var tableEndLabel = createTable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10765 tableEndLabel.className = 'timeline-highlight-label timeline-highlight-label-end'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10766 var tdEnd = tableEndLabel.rows[0].cells[0]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10767 tdEnd.innerHTML = this._endLabel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10768 if (this._cssClass) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10769 tdEnd.className = 'label_' + this._cssClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10770 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10771 this._layerDiv.appendChild(tableEndLabel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10772
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10773 if (this._timeline.isHorizontal()){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10774 div.style.left = minPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10775 div.style.width = (maxPixel - minPixel) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10777 tableStartLabel.style.right = (this._band.getTotalViewLength() - minPixel) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10778 tableStartLabel.style.width = (this._startLabel.length) + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10780 tableEndLabel.style.left = maxPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10781 tableEndLabel.style.width = (this._endLabel.length) + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10783 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10784 div.style.top = minPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10785 div.style.height = (maxPixel - minPixel) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10786
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10787 tableStartLabel.style.bottom = minPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10788 tableStartLabel.style.height = "1.5px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10789
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10790 tableEndLabel.style.top = maxPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10791 tableEndLabel.style.height = "1.5px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10792 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10793 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10794 this._layerDiv.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10795 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10796
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10797 Timeline.SpanHighlightDecorator.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10798 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10799
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10800 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10801 * Point Highlight Decorator
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10802 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10803 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10804
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10805 Timeline.PointHighlightDecorator = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10806 this._unit = params.unit != null ? params.unit : SimileAjax.NativeDateUnit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10807 this._date = (typeof params.date == "string") ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10808 this._unit.parseFromObject(params.date) : params.date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10809 this._width = params.width != null ? params.width : 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10810 // Since the width is used to calculate placements (see minPixel, below), we
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10811 // specify width here, not in css.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10812 this._color = params.color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10813 this._cssClass = params.cssClass != null ? params.cssClass : '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10814 this._opacity = params.opacity != null ? params.opacity : 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10815 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10816
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10817 Timeline.PointHighlightDecorator.prototype.initialize = function(band, timeline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10818 this._band = band;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10819 this._timeline = timeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10820 this._layerDiv = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10821 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10822
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10823 Timeline.PointHighlightDecorator.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10824 if (this._layerDiv != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10825 this._band.removeLayerDiv(this._layerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10826 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10827 this._layerDiv = this._band.createLayerDiv(10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10828 this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10829 this._layerDiv.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10830
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10831 var minDate = this._band.getMinDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10832 var maxDate = this._band.getMaxDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10833
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10834 if (this._unit.compare(this._date, maxDate) < 0 &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10835 this._unit.compare(this._date, minDate) > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10836
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10837 var pixel = this._band.dateToPixelOffset(this._date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10838 var minPixel = pixel - Math.round(this._width / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10839
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10840 var doc = this._timeline.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10841
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10842 var div = doc.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10843 div.className='timeline-highlight-point-decorator';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10844 div.className += ' ' + this._cssClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10845
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10846 if(this._color != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10847 div.style.backgroundColor = this._color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10848 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10849 if (this._opacity < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10850 SimileAjax.Graphics.setOpacity(div, this._opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10851 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10852 this._layerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10853
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10854 if (this._timeline.isHorizontal()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10855 div.style.left = minPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10856 div.style.width = this._width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10857 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10858 div.style.top = minPixel + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10859 div.style.height = this._width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10860 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10861 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10862 this._layerDiv.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10863 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10864
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10865 Timeline.PointHighlightDecorator.prototype.softPaint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10866 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10867 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10868 * Default Unit
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10869 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10870 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10871
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10872 Timeline.NativeDateUnit = new Object();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10873
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10874 Timeline.NativeDateUnit.createLabeller = function(locale, timeZone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10875 return new Timeline.GregorianDateLabeller(locale, timeZone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10876 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10877
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10878 Timeline.NativeDateUnit.makeDefaultValue = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10879 return new Date();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10880 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10881
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10882 Timeline.NativeDateUnit.cloneValue = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10883 return new Date(v.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10884 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10885
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10886 Timeline.NativeDateUnit.getParser = function(format) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10887 if (typeof format == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10888 format = format.toLowerCase();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10889 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10890 return (format == "iso8601" || format == "iso 8601") ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10891 Timeline.DateTime.parseIso8601DateTime :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10892 Timeline.DateTime.parseGregorianDateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10893 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10894
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10895 Timeline.NativeDateUnit.parseFromObject = function(o) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10896 return Timeline.DateTime.parseGregorianDateTime(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10897 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10898
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10899 Timeline.NativeDateUnit.toNumber = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10900 return v.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10901 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10902
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10903 Timeline.NativeDateUnit.fromNumber = function(n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10904 return new Date(n);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10905 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10906
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10907 Timeline.NativeDateUnit.compare = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10908 var n1, n2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10909 if (typeof v1 == "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10910 n1 = v1.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10911 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10912 n1 = Number(v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10913 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10914 if (typeof v2 == "object") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10915 n2 = v2.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10916 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10917 n2 = Number(v2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10918 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10919
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10920 return n1 - n2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10921 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10923 Timeline.NativeDateUnit.earlier = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10924 return Timeline.NativeDateUnit.compare(v1, v2) < 0 ? v1 : v2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10925 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10926
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10927 Timeline.NativeDateUnit.later = function(v1, v2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10928 return Timeline.NativeDateUnit.compare(v1, v2) > 0 ? v1 : v2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10929 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10930
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10931 Timeline.NativeDateUnit.change = function(v, n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10932 return new Date(v.getTime() + n);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10933 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10934
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10935 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10936 * Common localization strings
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10937 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10938 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10939
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10940 Timeline.strings["en"] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10941 wikiLinkLabel: "Discuss"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10942 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10943
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10944 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10945 * Localization of labellers.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10946 *==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10947 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10948
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10949 Timeline.GregorianDateLabeller.monthNames["en"] = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10950 "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10951 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10952
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10953 Timeline.GregorianDateLabeller.dayNames["en"] = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10954 "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10955 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10956 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10957 * timeplot-ajax-basic.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10958 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10959 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10960 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10961 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10962 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10963 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10964 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10965 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10966 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10967 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10968 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10969 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10970 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10971 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10972 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10973 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10974 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10975 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10976
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10977 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10978 * basic code which is included in front of timeplot code for the minified version
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10979 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10980 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10981 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10982 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10983 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10984
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10985 if ( typeof window.Timeplot == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10986 window.Timeplot = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10987 params : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10988 bundle : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10989 autoCreate : true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10990 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10991 namespace : "http://simile.mit.edu/2007/06/timeplot#",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10992 importers : {}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10993 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10994 Timeplot.urlPrefix = GeoTemCoMinifier_urlPrefix + 'lib/simile/timeplot/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10995 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10996
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10997 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10998 * Simile Timeplot API
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
10999 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11000 * Include Timeplot in your HTML file as follows:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11001 * <script src="http://api.simile-widgets.org/timeplot/1.1/timeplot-api.js" type="text/javascript"></script>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11002 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11003 *==================================================*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11004
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11005 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11006
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11007 var local = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11008
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11009 // obtain local mode from the document URL
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11010 if (document.location.search.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11011 var params = document.location.search.substr(1).split("&");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11012 for (var i = 0; i < params.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11013 if (params[i] == "local") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11014 local = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11015 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11016 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11017 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11018
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11019 // obtain local mode from the script URL params attribute
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11020 if (!local) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11021 var heads = document.documentElement.getElementsByTagName("head");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11022 for (var h = 0; h < heads.length; h++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11023 var node = heads[h].firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11024 while (node != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11025 if (node.nodeType == 1 && node.tagName.toLowerCase() == "script") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11026 var url = node.src;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11027 if (url.indexOf("timeplot-api") >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11028 local = (url.indexOf("local") >= 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11029 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11030 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11031 node = node.nextSibling;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11032 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11033 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11034 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11035
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11036 // Load Timeplot if it's not already loaded (after SimileAjax and Timeline)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11037 var loadTimeplot = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11038
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11039 if (typeof window.Timeplot != "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11040 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11041 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11042
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11043 window.Timeplot = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11044 loaded: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11045 params: { bundle: true, autoCreate: true },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11046 namespace: "http://simile.mit.edu/2007/06/timeplot#",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11047 importers: {}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11048 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11049
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11050 var javascriptFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11051 "timeplot.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11052 "plot.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11053 "sources.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11054 "geometry.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11055 "color.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11056 "math.js",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11057 "processor.js"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11058 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11059 var cssFiles = [
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11060 "timeplot.css"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11061 ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11062
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11063 var locales = [ "en" ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11064
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11065 var defaultClientLocales = ("language" in navigator ? navigator.language : navigator.browserLanguage).split(";");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11066 for (var l = 0; l < defaultClientLocales.length; l++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11067 var locale = defaultClientLocales[l];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11068 if (locale != "en") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11069 var segments = locale.split("-");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11070 if (segments.length > 1 && segments[0] != "en") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11071 locales.push(segments[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11072 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11073 locales.push(locale);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11074 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11075 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11076
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11077 var paramTypes = { bundle:Boolean, js:Array, css:Array, autoCreate:Boolean };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11078 if (typeof Timeplot_urlPrefix == "string") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11079 Timeplot.urlPrefix = Timeplot_urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11080 if ("Timeplot_parameters" in window) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11081 SimileAjax.parseURLParameters(Timeplot_parameters, Timeplot.params, paramTypes);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11082 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11083 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11084 var url = SimileAjax.findScript(document, "/timeplot-api.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11085 if (url == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11086 Timeplot.error = new Error("Failed to derive URL prefix for Simile Timeplot API code files");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11087 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11088 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11089 Timeplot.urlPrefix = url.substr(0, url.indexOf("timeplot-api.js"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11090
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11091 SimileAjax.parseURLParameters(url, Timeplot.params, paramTypes);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11092 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11093
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11094 if (Timeplot.params.locale) { // ISO-639 language codes,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11095 // optional ISO-3166 country codes (2 characters)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11096 if (Timeplot.params.locale != "en") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11097 var segments = Timeplot.params.locale.split("-");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11098 if (segments.length > 1 && segments[0] != "en") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11099 locales.push(segments[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11100 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11101 locales.push(Timeplot.params.locale);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11102 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11103 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11104
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11105 var timeplotURLPrefix = Timeplot.urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11106
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11107 if (local && !("console" in window)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11108 var firebug = [ timeplotURLPrefix + "lib/firebug/firebug.js" ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11109 SimileAjax.includeJavascriptFiles(document, "", firebug);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11110 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11112 var canvas = document.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11113
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11114 if (!canvas.getContext) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11115 var excanvas = [ timeplotURLPrefix + "lib/excanvas.js" ];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11116 SimileAjax.includeJavascriptFiles(document, "", excanvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11117 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11118
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11119 var scriptURLs = Timeplot.params.js || [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11120 var cssURLs = Timeplot.params.css || [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11122 // Core scripts and styles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11123 if (Timeplot.params.bundle && !local) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11124 scriptURLs.push(timeplotURLPrefix + "timeplot-bundle.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11125 cssURLs.push(timeplotURLPrefix + "timeplot-bundle.css");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11126 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11127 SimileAjax.prefixURLs(scriptURLs, timeplotURLPrefix + "scripts/", javascriptFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11128 SimileAjax.prefixURLs(cssURLs, timeplotURLPrefix + "styles/", cssFiles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11129 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11130
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11131 // Localization
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11132 //for (var i = 0; i < locales.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11133 // scriptURLs.push(Timeplot.urlPrefix + "locales/" + locales[i] + "/locale.js");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11134 //};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11135
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11136 window.SimileAjax_onLoad = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11137 if (local && window.console.open) window.console.open();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11138 if (Timeplot.params.callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11139 eval(Timeplot.params.callback + "()");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11140 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11141 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11142
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11143 SimileAjax.includeJavascriptFiles(document, "", scriptURLs);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11144 SimileAjax.includeCssFiles(document, "", cssURLs);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11145 Timeplot.loaded = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11146 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11147
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11148 // Load Timeline if it's not already loaded (after SimileAjax and before Timeplot)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11149 var loadTimeline = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11150 if (typeof Timeline != "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11151 loadTimeplot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11152 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11153 var timelineURL = "http://api.simile-widgets.org/timeline/2.3.1/timeline-api.js?bundle=true";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11154 window.SimileAjax_onLoad = loadTimeplot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11155 SimileAjax.includeJavascriptFile(document, timelineURL);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11156 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11157 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11158
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11159 // Load SimileAjax if it's not already loaded
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11160 if (typeof SimileAjax == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11161 window.SimileAjax_onLoad = loadTimeline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11162
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11163 var url = "http://api.simile-widgets.org/ajax/2.2.1/simile-ajax-api.js?bundle=true";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11164
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11165 var createScriptElement = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11166 var script = document.createElement("script");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11167 script.type = "text/javascript";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11168 script.language = "JavaScript";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11169 script.src = url;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11170 document.getElementsByTagName("head")[0].appendChild(script);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11171 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11172
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11173 if (document.body == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11174 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11175 document.write("<script src='" + url + "' type='text/javascript'></script>");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11176 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11177 createScriptElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11178 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11179 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11180 createScriptElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11182 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11183 loadTimeline();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11184 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11185 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11186 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11187 * Timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11188 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11189 * @fileOverview Timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11190 * @name Timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11191 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11192
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11193 Timeline.Debug = SimileAjax.Debug; // timeline uses it's own debug system which is not as advanced
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11194 var log = SimileAjax.Debug.log; // shorter name is easier to use
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11195
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11196 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11197 * This function is used to implement a raw but effective OOP-like inheritance
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11198 * in various Timeplot classes.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11199 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11200 Object.extend = function(destination, source) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11201 for (var property in source) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11202 destination[property] = source[property];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11203 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11204 return destination;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11205 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11206
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11207 // ---------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11208
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11209 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11210 * Create a timeplot attached to the given element and using the configuration from the given array of PlotInfos
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11211 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11212 Timeplot.create = function(elmt, plotInfos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11213 return new Timeplot._Impl(elmt, plotInfos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11214 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11215
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11216 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11217 * Create a PlotInfo configuration from the given map of params
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11218 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11219 Timeplot.createPlotInfo = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11220 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11221 id: ("id" in params) ? params.id : "p" + Math.round(Math.random() * 1000000),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11222 dataSource: ("dataSource" in params) ? params.dataSource : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11223 eventSource: ("eventSource" in params) ? params.eventSource : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11224 timeGeometry: ("timeGeometry" in params) ? params.timeGeometry : new Timeplot.DefaultTimeGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11225 valueGeometry: ("valueGeometry" in params) ? params.valueGeometry : new Timeplot.DefaultValueGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11226 timeZone: ("timeZone" in params) ? params.timeZone : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11227 fillColor: ("fillColor" in params) ? ((params.fillColor == "string") ? new Timeplot.Color(params.fillColor) : params.fillColor) : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11228 fillGradient: ("fillGradient" in params) ? params.fillGradient : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11229 fillFrom: ("fillFrom" in params) ? params.fillFrom : Number.NEGATIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11230 lineColor: ("lineColor" in params) ? ((params.lineColor == "string") ? new Timeplot.Color(params.lineColor) : params.lineColor) : new Timeplot.Color("#606060"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11231 lineWidth: ("lineWidth" in params) ? params.lineWidth : 1.0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11232 dotRadius: ("dotRadius" in params) ? params.dotRadius : 2.0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11233 dotColor: ("dotColor" in params) ? params.dotColor : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11234 eventLineWidth: ("eventLineWidth" in params) ? params.eventLineWidth : 1.0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11235 showValues: ("showValues" in params) ? params.showValues : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11236 roundValues: ("roundValues" in params) ? params.roundValues : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11237 valuesOpacity: ("valuesOpacity" in params) ? params.valuesOpacity : 75,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11238 bubbleWidth: ("bubbleWidth" in params) ? params.bubbleWidth : 300,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11239 bubbleHeight: ("bubbleHeight" in params) ? params.bubbleHeight : 200
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11240 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11241 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11242
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11243 // -------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11244
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11245 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11246 * This is the implementation of the Timeplot object.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11247 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11248 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11249 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11250 Timeplot._Impl = function(elmt, plotInfos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11251 this._id = "t" + Math.round(Math.random() * 1000000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11252 this._containerDiv = elmt;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11253 this._plotInfos = plotInfos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11254 this._painters = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11255 background: [],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11256 foreground: []
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11257 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11258 this._painter = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11259 this._active = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11260 this._upright = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11261 this._initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11262 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11263
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11264 Timeplot._Impl.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11265
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11266 dispose: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11267 for (var i = 0; i < this._plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11268 this._plots[i].dispose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11269 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11270 this._plots = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11271 this._plotsInfos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11272 this._containerDiv.innerHTML = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11273 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11274
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11275 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11276 * Returns the main container div this timeplot is operating on.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11277 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11278 getElement: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11279 return this._containerDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11280 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11281
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11282 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11283 * Returns document this timeplot belongs to.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11284 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11285 getDocument: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11286 return this._containerDiv.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11287 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11288
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11289 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11290 * Append the given element to the timeplot DOM
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11291 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11292 add: function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11293 this._containerDiv.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11294 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11295
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11296 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11297 * Remove the given element to the timeplot DOM
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11298 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11299 remove: function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11300 this._containerDiv.removeChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11301 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11302
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11303 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11304 * Add a painter to the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11305 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11306 addPainter: function(layerName, painter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11307 var layer = this._painters[layerName];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11308 if (layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11309 for (var i = 0; i < layer.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11310 if (layer[i].context._id == painter.context._id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11311 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11312 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11313 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11314 layer.push(painter);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11315 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11316 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11317
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11318 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11319 * Remove a painter from the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11320 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11321 removePainter: function(layerName, painter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11322 var layer = this._painters[layerName];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11323 if (layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11324 for (var i = 0; i < layer.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11325 if (layer[i].context._id == painter.context._id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11326 layer.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11327 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11328 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11329 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11330 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11331 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11332
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11333 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11334 * Get the width in pixels of the area occupied by the entire timeplot in the page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11335 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11336 getWidth: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11337 return this._containerDiv.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11338 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11339
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11340 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11341 * Get the height in pixels of the area occupied by the entire timeplot in the page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11342 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11343 getHeight: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11344 return this._containerDiv.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11345 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11346
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11347 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11348 * Get the drawing canvas associated with this timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11349 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11350 getCanvas: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11351 return this._canvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11352 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11353
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11354 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11355 * <p>Load the data from the given url into the given eventSource, using
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11356 * the given separator to parse the columns and preprocess it before parsing
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11357 * thru the optional filter function. The filter is useful for when
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11358 * the data is row-oriented but the format is not compatible with the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11359 * one that Timeplot expects.</p>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11360 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11361 * <p>Here is an example of a filter that changes dates in the form 'yyyy/mm/dd'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11362 * in the required 'yyyy-mm-dd' format:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11363 * <pre>var dataFilter = function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11364 * for (var i = 0; i < data.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11365 * var row = data[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11366 * row[0] = row[0].replace(/\//g,"-");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11367 * }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11368 * return data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11369 * };</pre></p>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11370 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11371 loadText: function(url, separator, eventSource, filter, format) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11372 if (this._active) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11373 var tp = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11374
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11375 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11376 alert("Failed to load data xml from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11377 tp.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11378 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11379
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11380 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11381 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11382 eventSource.loadText(xmlhttp.responseText, separator, url, filter, format);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11383 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11384 SimileAjax.Debug.exception(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11385 } finally {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11386 tp.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11387 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11388 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11389
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11390 this.showLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11391 window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11392 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11393 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11394
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11395 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11396 * Load event data from the given url into the given eventSource, using
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11397 * the Timeline XML event format.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11398 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11399 loadXML: function(url, eventSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11400 if (this._active) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11401 var tl = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11402
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11403 var fError = function(statusText, status, xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11404 alert("Failed to load data xml from " + url + "\n" + statusText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11405 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11406 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11407
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11408 var fDone = function(xmlhttp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11409 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11410 var xml = xmlhttp.responseXML;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11411 if (!xml.documentElement && xmlhttp.responseStream) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11412 xml.load(xmlhttp.responseStream);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11413 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11414 eventSource.loadXML(xml, url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11415 } finally {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11416 tl.hideLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11417 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11418 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11419
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11420 this.showLoadingMessage();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11421 window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11422 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11423 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11424
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11425 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11426 * Overlay a 'div' element filled with the given text and styles to this timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11427 * This is used to implement labels since canvas does not support drawing text.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11428 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11429 putText: function(id, text, clazz, styles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11430 var div = this.putDiv(id, "timeplot-div " + clazz, styles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11431 div.innerHTML = text;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11432 return div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11433 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11434
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11435 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11436 * Overlay a 'div' element, with the given class and the given styles to this timeplot.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11437 * This is used for labels and horizontal and vertical grids.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11438 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11439 putDiv: function(id, clazz, styles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11440 var tid = this._id + "-" + id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11441 var div = document.getElementById(tid);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11442 if (!div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11443 var container = this._containerDiv.firstChild; // get the divs container
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11444 div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11445 div.setAttribute("id",tid);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11446 container.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11447 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11448 div.setAttribute("class","timeplot-div " + clazz);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11449 div.setAttribute("className","timeplot-div " + clazz);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11450 this.placeDiv(div,styles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11451 return div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11452 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11453
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11454 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11455 * Associate the given map of styles to the given element.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11456 * In case such styles indicate position (left,right,top,bottom) correct them
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11457 * with the padding information so that they align to the 'internal' area
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11458 * of the timeplot.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11459 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11460 placeDiv: function(div, styles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11461 if (styles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11462 for (style in styles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11463 if (style == "left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11464 styles[style] += this._paddingX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11465 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11466 } else if (style == "right") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11467 styles[style] += this._paddingX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11468 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11469 } else if (style == "top") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11470 styles[style] += this._paddingY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11471 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11472 } else if (style == "bottom") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11473 styles[style] += this._paddingY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11474 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11475 } else if (style == "width") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11476 if (styles[style] < 0) styles[style] = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11477 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11478 } else if (style == "height") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11479 if (styles[style] < 0) styles[style] = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11480 styles[style] += "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11481 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11482 div.style[style] = styles[style];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11483 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11484 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11485 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11486
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11487 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11488 * return a {x,y} map with the location of the given element relative to the 'internal' area of the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11489 * (that is, without the container padding)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11490 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11491 locate: function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11492 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11493 x: div.offsetLeft - this._paddingX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11494 y: div.offsetTop - this._paddingY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11495 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11496 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11497
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11498 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11499 * Forces timeplot to re-evaluate the various value and time geometries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11500 * associated with its plot layers and repaint accordingly. This should
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11501 * be invoked after the data in any of the data sources has been
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11502 * modified.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11503 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11504 update: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11505 if (this._active) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11506 for (var i = 0; i < this._plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11507 var plot = this._plots[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11508 var dataSource = plot.getDataSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11509 if (dataSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11510 var range = dataSource.getRange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11511 if (range) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11512 plot._valueGeometry.setRange(range);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11513 plot._timeGeometry.setRange(range);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11514 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11515 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11516 plot.hideValues();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11517 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11518 this.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11519 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11520 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11521
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11522 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11523 * Forces timeplot to re-evaluate its own geometry, clear itself and paint.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11524 * This should be used instead of paint() when you're not sure if the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11525 * geometry of the page has changed or not.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11526 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11527 repaint: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11528 if (this._active) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11529 this._prepareCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11530 for (var i = 0; i < this._plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11531 var plot = this._plots[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11532 if (plot._timeGeometry) plot._timeGeometry.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11533 if (plot._valueGeometry) plot._valueGeometry.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11534 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11535 this.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11536 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11537 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11538
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11539 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11540 * Calls all the painters that were registered to this timeplot and makes them
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11541 * paint the timeplot. This should be used only when you're sure that the geometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11542 * of the page hasn't changed.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11543 * NOTE: painting is performed by a different thread and it's safe to call this
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11544 * function in bursts (as in mousemove or during window resizing
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11545 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11546 paint: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11547 if (this._active && this._painter == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11548 var timeplot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11549 this._painter = window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11550 timeplot._clearCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11551
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11552 var run = function(action,context) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11553 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11554 if (context.setTimeplot) context.setTimeplot(timeplot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11555 action.apply(context,[]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11556 } catch (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11557 SimileAjax.Debug.exception(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11558 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11559 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11560
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11561 var background = timeplot._painters.background;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11562 for (var i = 0; i < background.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11563 run(background[i].action, background[i].context);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11564 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11565 var foreground = timeplot._painters.foreground;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11566 for (var i = 0; i < foreground.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11567 run(foreground[i].action, foreground[i].context);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11568 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11569
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11570 timeplot._painter = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11571 }, 20);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11572 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11573 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11574
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11575 _clearCanvas: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11576 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11577 var ctx = canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11578 ctx.clearRect(0,0,canvas.width,canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11579 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11580
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11581 _clearLabels: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11582 var labels = this._containerDiv.firstChild;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11583 if (labels) this._containerDiv.removeChild(labels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11584 labels = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11585 this._containerDiv.appendChild(labels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11586 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11587
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11588 _prepareCanvas: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11589 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11590
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11591 // using jQuery. note we calculate the average padding; if your
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11592 // padding settings are not symmetrical, the labels will be off
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11593 // since they expect to be centered on the canvas.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11594 var con = SimileAjax.jQuery(this._containerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11595 this._paddingX = (parseInt(con.css('paddingLeft')) +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11596 parseInt(con.css('paddingRight'))) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11597 this._paddingY = (parseInt(con.css('paddingTop')) +
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11598 parseInt(con.css('paddingBottom'))) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11599
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11600 canvas.width = this.getWidth() - (this._paddingX * 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11601 canvas.height = this.getHeight() - (this._paddingY * 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11602
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11603 var ctx = canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11604 this._setUpright(ctx, canvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11605 ctx.globalCompositeOperation = 'source-over';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11606 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11608 _setUpright: function(ctx, canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11609 // excanvas+IE requires this to be done only once, ever; actual canvas
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11610 // implementations reset and require this for each call to re-layout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11611 if (!SimileAjax.Platform.browser.isIE) this._upright = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11612 if (!this._upright) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11613 this._upright = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11614 ctx.translate(0, canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11615 ctx.scale(1,-1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11616 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11617 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11618
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11619 _isBrowserSupported: function(canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11620 var browser = SimileAjax.Platform.browser;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11621 if ((canvas.getContext && window.getComputedStyle) ||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11622 (browser.isIE && browser.majorVersion >= 6)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11623 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11624 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11625 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11626 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11627 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11628
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11629 _initialize: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11630
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11631 // initialize the window manager (used to handle the popups)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11632 // NOTE: this is a singleton and it's safe to call multiple times
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11633 SimileAjax.WindowManager.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11635 var containerDiv = this._containerDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11636 var doc = containerDiv.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11637
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11638 // make sure the timeplot div has the right class
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11639 containerDiv.className = "timeplot-container " + containerDiv.className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11640
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11641 // clean it up if it contains some content
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11642 while (containerDiv.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11643 containerDiv.removeChild(containerDiv.firstChild);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11644 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11645
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11646 var canvas = doc.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11647
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11648 if (this._isBrowserSupported(canvas)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11649 this._clearLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11651 this._canvas = canvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11652 canvas.className = "timeplot-canvas";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11653 containerDiv.appendChild(canvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11654 if(!canvas.getContext && G_vmlCanvasManager) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11655 canvas = G_vmlCanvasManager.initElement(this._canvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11656 this._canvas = canvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11657 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11658 this._prepareCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11659
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11660 // inserting copyright and link to simile
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11661 var elmtCopyright = SimileAjax.Graphics.createTranslucentImage(Timeplot.urlPrefix + "images/copyright.png");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11662 elmtCopyright.className = "timeplot-copyright";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11663 elmtCopyright.title = "Timeplot (c) SIMILE - http://simile.mit.edu/timeplot/";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11664 SimileAjax.DOM.registerEvent(elmtCopyright, "click", function() { window.location = "http://simile.mit.edu/timeplot/"; });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11665 containerDiv.appendChild(elmtCopyright);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11666
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11667 var timeplot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11668 var painter = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11669 onAddMany: function() { timeplot.update(); },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11670 onClear: function() { timeplot.update(); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11672
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11673 // creating painters
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11674 this._plots = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11675 if (this._plotInfos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11676 for (var i = 0; i < this._plotInfos.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11677 var plot = new Timeplot.Plot(this, this._plotInfos[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11678 var dataSource = plot.getDataSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11679 if (dataSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11680 dataSource.addListener(painter);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11681 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11682 this.addPainter("background", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11683 context: plot.getTimeGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11684 action: plot.getTimeGeometry().paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11685 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11686 this.addPainter("background", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11687 context: plot.getValueGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11688 action: plot.getValueGeometry().paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11689 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11690 this.addPainter("foreground", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11691 context: plot,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11692 action: plot.paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11693 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11694 this._plots.push(plot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11695 plot.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11696 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11697 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11699 // creating loading UI
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11700 var message = SimileAjax.Graphics.createMessageBubble(doc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11701 message.containerDiv.className = "timeplot-message-container";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11702 containerDiv.appendChild(message.containerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11703
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11704 message.contentDiv.className = "timeplot-message";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11705 message.contentDiv.innerHTML = "<img src='" + Timeplot.urlPrefix + "images/progress-running.gif' /> Loading...";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11706
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11707 this.showLoadingMessage = function() { message.containerDiv.style.display = "block"; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11708 this.hideLoadingMessage = function() { message.containerDiv.style.display = "none"; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11709
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11710 this._active = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11711
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11712 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11713
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11714 this._message = SimileAjax.Graphics.createMessageBubble(doc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11715 this._message.containerDiv.className = "timeplot-message-container";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11716 this._message.containerDiv.style.top = "15%";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11717 this._message.containerDiv.style.left = "20%";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11718 this._message.containerDiv.style.right = "20%";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11719 this._message.containerDiv.style.minWidth = "20em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11720 this._message.contentDiv.className = "timeplot-message";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11721 this._message.contentDiv.innerHTML = "We're terribly sorry, but your browser is not currently supported by <a href='http://simile.mit.edu/timeplot/'>Timeplot</a>.<br><br> We are working on supporting it in the near future but, for now, see the <a href='http://simile.mit.edu/wiki/Timeplot_Limitations'>list of currently supported browsers</a>.";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11722 this._message.containerDiv.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11723
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11724 containerDiv.appendChild(this._message.containerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11725
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11726 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11727 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11728 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11729 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11730 * Plot Layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11731 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11732 * @fileOverview Plot Layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11733 * @name Plot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11734 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11735
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11736 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11737 * A plot layer is the main building block for timeplots and it's the object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11738 * that is responsible for painting the plot itself. Each plot needs to have
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11739 * a time geometry, either a DataSource (for time series
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11740 * plots) or an EventSource (for event plots) and a value geometry in case
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11741 * of time series plots. Such parameters are passed along
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11742 * in the 'plotInfo' map.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11743 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11744 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11745 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11746 Timeplot.Plot = function(timeplot, plotInfo) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11747 this._timeplot = timeplot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11748 this._canvas = timeplot.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11749 this._plotInfo = plotInfo;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11750 this._id = plotInfo.id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11751 this._timeGeometry = plotInfo.timeGeometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11752 this._valueGeometry = plotInfo.valueGeometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11753 this._theme = new Timeline.getDefaultTheme();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11754 this._dataSource = plotInfo.dataSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11755 this._eventSource = plotInfo.eventSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11756 this._bubble = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11757 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11758
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11759 Timeplot.Plot.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11760
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11761 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11762 * Initialize the plot layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11763 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11764 initialize: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11765 if (this._dataSource && this._dataSource.getValue) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11766 this._timeFlag = this._timeplot.putDiv("timeflag","timeplot-timeflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11767 this._valueFlag = this._timeplot.putDiv(this._id + "valueflag","timeplot-valueflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11768 this._valueFlagLineLeft = this._timeplot.putDiv(this._id + "valueflagLineLeft","timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11769 this._valueFlagLineRight = this._timeplot.putDiv(this._id + "valueflagLineRight","timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11770 if (!this._valueFlagLineLeft.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11771 this._valueFlagLineLeft.appendChild(SimileAjax.Graphics.createTranslucentImage(Timeplot.urlPrefix + "images/line_left.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11772 this._valueFlagLineRight.appendChild(SimileAjax.Graphics.createTranslucentImage(Timeplot.urlPrefix + "images/line_right.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11773 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11774 this._valueFlagPole = this._timeplot.putDiv(this._id + "valuepole","timeplot-valueflag-pole");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11775
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11776 var opacity = this._plotInfo.valuesOpacity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11777
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11778 SimileAjax.Graphics.setOpacity(this._timeFlag, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11779 SimileAjax.Graphics.setOpacity(this._valueFlag, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11780 SimileAjax.Graphics.setOpacity(this._valueFlagLineLeft, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11781 SimileAjax.Graphics.setOpacity(this._valueFlagLineRight, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11782 SimileAjax.Graphics.setOpacity(this._valueFlagPole, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11783
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11784 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11785
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11786 var mouseOverHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11787 if (plot._plotInfo.showValues) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11788 plot._valueFlag.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11789 mouseMoveHandler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11790 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11791 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11792
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11793 var day = 24 * 60 * 60 * 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11794 var month = 30 * day;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11795
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11796 var mouseMoveHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11797 if (typeof SimileAjax != "undefined" && plot._plotInfo.showValues) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11798 var c = plot._canvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11799 var x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot._canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11800 if (x > c.width) x = c.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11801 if (isNaN(x) || x < 0) x = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11802 var t = plot._timeGeometry.fromScreen(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11803 if (t == 0) { // something is wrong
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11804 plot._valueFlag.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11805 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11806 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11807
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11808 var validTime = plot._dataSource.getClosestValidTime(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11809 x = plot._timeGeometry.toScreen(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11810 var v = plot._dataSource.getValue(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11811 if (plot._plotInfo.roundValues) v = Math.round(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11812 plot._valueFlag.innerHTML = new String(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11813 var d = new Date(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11814 var p = plot._timeGeometry.getPeriod();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11815 if (p < day) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11816 plot._timeFlag.innerHTML = d.toLocaleTimeString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11817 } else if (p > month) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11818 plot._timeFlag.innerHTML = d.toLocaleDateString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11819 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11820 plot._timeFlag.innerHTML = d.toLocaleString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11821 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11822
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11823 var tw = plot._timeFlag.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11824 var th = plot._timeFlag.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11825 var tdw = Math.round(tw / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11826 var vw = plot._valueFlag.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11827 var vh = plot._valueFlag.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11828 var y = plot._valueGeometry.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11829
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11830 if (x + tdw > c.width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11831 var tx = c.width - tdw;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11832 } else if (x - tdw < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11833 var tx = tdw;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11834 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11835 var tx = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11836 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11837
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11838 if (plot._timeGeometry._timeValuePosition == "top") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11839 plot._timeplot.placeDiv(plot._valueFlagPole, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11840 left: x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11841 top: th - 5,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11842 height: c.height - y - th + 6,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11843 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11844 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11845 plot._timeplot.placeDiv(plot._timeFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11846 left: tx - tdw,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11847 top: -6,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11848 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11849 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11850 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11851 plot._timeplot.placeDiv(plot._valueFlagPole, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11852 left: x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11853 bottom: th - 5,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11854 height: y - th + 6,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11855 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11856 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11857 plot._timeplot.placeDiv(plot._timeFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11858 left: tx - tdw,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11859 bottom: -6,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11860 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11861 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11863
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11864 if (x + vw + 14 > c.width && y + vh + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11865 plot._valueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11866 plot._timeplot.placeDiv(plot._valueFlagLineRight,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11867 left: x - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11868 bottom: y - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11869 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11870 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11871 plot._timeplot.placeDiv(plot._valueFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11872 left: x - vw - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11873 bottom: y - vh - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11874 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11875 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11876 } else if (x + vw + 14 > c.width && y + vh + 4 < c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11877 plot._valueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11878 plot._timeplot.placeDiv(plot._valueFlagLineLeft,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11879 left: x - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11880 bottom: y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11881 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11882 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11883 plot._timeplot.placeDiv(plot._valueFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11884 left: x - vw - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11885 bottom: y + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11886 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11887 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11888 } else if (x + vw + 14 < c.width && y + vh + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11889 plot._valueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11890 plot._timeplot.placeDiv(plot._valueFlagLineLeft,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11891 left: x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11892 bottom: y - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11893 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11894 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11895 plot._timeplot.placeDiv(plot._valueFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11896 left: x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11897 bottom: y - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11898 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11899 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11900 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11901 plot._valueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11902 plot._timeplot.placeDiv(plot._valueFlagLineRight,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11903 left: x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11904 bottom: y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11905 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11906 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11907 plot._timeplot.placeDiv(plot._valueFlag,{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11908 left: x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11909 bottom: y + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11910 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11911 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11912 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11913 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11914 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11916 var timeplotElement = this._timeplot.getElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11917 SimileAjax.DOM.registerEvent(timeplotElement, "mouseover", mouseOverHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11918 SimileAjax.DOM.registerEvent(timeplotElement, "mousemove", mouseMoveHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11919 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11920 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11921
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11922 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11923 * Dispose the plot layer and all the data sources and listeners associated to it
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11924 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11925 dispose: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11926 if (this._dataSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11927 this._dataSource.removeListener(this._paintingListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11928 this._paintingListener = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11929 this._dataSource.dispose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11930 this._dataSource = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11931 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11932 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11933
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11934 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11935 * Hide the values
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11936 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11937 hideValues: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11938 if (this._valueFlag) this._valueFlag.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11939 if (this._timeFlag) this._timeFlag.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11940 if (this._valueFlagLineLeft) this._valueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11941 if (this._valueFlagLineRight) this._valueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11942 if (this._valueFlagPole) this._valueFlagPole.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11943 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11944
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11945 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11946 * Return the data source of this plot layer (it could be either a DataSource or an EventSource)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11947 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11948 getDataSource: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11949 return (this._dataSource) ? this._dataSource : this._eventSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11950 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11951
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11952 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11953 * Return the time geometry associated with this plot layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11954 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11955 getTimeGeometry: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11956 return this._timeGeometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11957 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11958
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11959 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11960 * Return the value geometry associated with this plot layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11961 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11962 getValueGeometry: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11963 return this._valueGeometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11964 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11965
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11966 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11967 * Paint this plot layer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11968 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11969 paint: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11970 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11971
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11972 ctx.lineWidth = this._plotInfo.lineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11973 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11974
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11975 if (this._dataSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11976 if (this._plotInfo.fillColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11977 if (this._plotInfo.fillGradient) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11978 var gradient = ctx.createLinearGradient(0,this._canvas.height,0,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11979 gradient.addColorStop(0,this._plotInfo.fillColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11980 gradient.addColorStop(0.5,this._plotInfo.fillColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11981 gradient.addColorStop(1, 'rgba(255,255,255,0)');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11982
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11983 ctx.fillStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11984 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11985 ctx.fillStyle = this._plotInfo.fillColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11986 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11987
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11988 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11989 ctx.moveTo(0,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11990 this._plot(function(x,y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11991 ctx.lineTo(x,y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11992 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11993 if (this._plotInfo.fillFrom == Number.NEGATIVE_INFINITY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11994 ctx.lineTo(this._canvas.width, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11995 } else if (this._plotInfo.fillFrom == Number.POSITIVE_INFINITY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11996 ctx.lineTo(this._canvas.width, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11997 ctx.lineTo(0, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11998 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
11999 ctx.lineTo(this._canvas.width, this._valueGeometry.toScreen(this._plotInfo.fillFrom));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12000 ctx.lineTo(0, this._valueGeometry.toScreen(this._plotInfo.fillFrom));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12001 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12002 ctx.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12003 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12004
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12005 if (this._plotInfo.lineColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12006 ctx.strokeStyle = this._plotInfo.lineColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12007 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12008 var first = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12009 this._plot(function(x,y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12010 if (first) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12011 first = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12012 ctx.moveTo(x,y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12013 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12014 ctx.lineTo(x,y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12015 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12016 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12017 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12018
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12019 if (this._plotInfo.dotColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12020 ctx.fillStyle = this._plotInfo.dotColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12021 var r = this._plotInfo.dotRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12022 this._plot(function(x,y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12023 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12024 ctx.arc(x,y,r,0,2*Math.PI,true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12025 ctx.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12026 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12027 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12028 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12029
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12030 if (this._eventSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12031 var gradient = ctx.createLinearGradient(0,0,0,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12032 gradient.addColorStop(1, 'rgba(255,255,255,0)');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12033
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12034 ctx.strokeStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12035 ctx.fillStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12036 ctx.lineWidth = this._plotInfo.eventLineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12037 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12038
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12039 var i = this._eventSource.getAllEventIterator();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12040 while (i.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12041 var event = i.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12042 var color = event.getColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12043 color = (color) ? new Timeplot.Color(color) : this._plotInfo.lineColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12044 var eventStart = event.getStart().getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12045 var eventEnd = event.getEnd().getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12046 if (eventStart == eventEnd) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12047 var c = color.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12048 gradient.addColorStop(0, c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12049 var start = this._timeGeometry.toScreen(eventStart);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12050 start = Math.floor(start) + 0.5; // center it between two pixels (makes the rendering nicer)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12051 var end = start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12052 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12053 ctx.moveTo(start,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12054 ctx.lineTo(start,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12055 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12056 var x = start - 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12057 var w = 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12058 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12059 var c = color.toString(0.5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12060 gradient.addColorStop(0, c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12061 var start = this._timeGeometry.toScreen(eventStart);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12062 start = Math.floor(start) + 0.5; // center it between two pixels (makes the rendering nicer)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12063 var end = this._timeGeometry.toScreen(eventEnd);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12064 end = Math.floor(end) + 0.5; // center it between two pixels (makes the rendering nicer)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12065 ctx.fillRect(start,0,end - start, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12066 var x = start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12067 var w = end - start - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12068 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12069
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12070 var div = this._timeplot.putDiv(event.getID(),"timeplot-event-box",{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12071 left: Math.round(x),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12072 width: Math.round(w),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12073 top: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12074 height: this._canvas.height - 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12075 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12076
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12077 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12078 var clickHandler = function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12079 return function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12080 var doc = plot._timeplot.getDocument();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12081 plot._closeBubble();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12082 var coords = SimileAjax.DOM.getEventPageCoordinates(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12083 var elmtCoords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12084 plot._bubble = SimileAjax.Graphics.createBubbleForPoint(coords.x, elmtCoords.top + plot._canvas.height, plot._plotInfo.bubbleWidth, plot._plotInfo.bubbleHeight, "bottom");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12085 event.fillInfoBubble(plot._bubble.content, plot._theme, plot._timeGeometry.getLabeler());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12086 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12087 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12088 var mouseOverHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12089 elmt.oldClass = elmt.className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12090 elmt.className = elmt.className + " timeplot-event-box-highlight";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12091 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12092 var mouseOutHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12093 elmt.className = elmt.oldClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12094 elmt.oldClass = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12095 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12096
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12097 if (!div.instrumented) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12098 SimileAjax.DOM.registerEvent(div, "click" , clickHandler(event));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12099 SimileAjax.DOM.registerEvent(div, "mouseover", mouseOverHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12100 SimileAjax.DOM.registerEvent(div, "mouseout" , mouseOutHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12101 div.instrumented = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12102 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12103 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12104 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12105 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12106
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12107 _plot: function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12108 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12109 if (data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12110 var times = data.times;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12111 var values = data.values;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12112 var T = times.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12113 for (var t = 0; t < T; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12114 var x = this._timeGeometry.toScreen(times[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12115 var y = this._valueGeometry.toScreen(values[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12116 f(x, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12117 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12118 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12119 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12120
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12121 _closeBubble: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12122 if (this._bubble != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12123 this._bubble.close();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12124 this._bubble = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12125 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12126 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12127
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12128 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12129 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12130 * Sources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12131 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12132 * @fileOverview Sources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12133 * @name Sources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12134 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12135
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12136 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12137 * Timeplot.DefaultEventSource is an extension of Timeline.DefaultEventSource
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12138 * and therefore reuses the exact same event loading subsystem that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12139 * Timeline uses.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12140 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12141 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12142 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12143 Timeplot.DefaultEventSource = function(eventIndex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12144 Timeline.DefaultEventSource.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12145 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12146
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12147 Object.extend(Timeplot.DefaultEventSource.prototype, Timeline.DefaultEventSource.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12148
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12149 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12150 * Function used by Timeplot to load time series data from a text file.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12151 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12152 Timeplot.DefaultEventSource.prototype.loadText = function(text, separator, url, filter, format) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12153
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12154 if (text == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12155 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12156 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12157
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12158 this._events.maxValues = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12159 var base = this._getBaseURL(url);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12160
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12161 if (!format) format = 'iso8601';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12162 var parseDateTimeFunction = this._events.getUnit().getParser(format);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12163
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12164 var data = this._parseText(text, separator);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12165
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12166 var added = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12167
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12168 if (filter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12169 data = filter(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12170 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12171
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12172 if (data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12173 for (var i = 0; i < data.length; i++){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12174 var row = data[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12175 if (row.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12176 var dateStr = SimileAjax.jQuery.trim(row[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12177 var date = parseDateTimeFunction(dateStr);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12178 if (date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12179 var evt = new Timeplot.DefaultEventSource.NumericEvent(date,row.slice(1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12180 this._events.add(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12181 added = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12182 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12184 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12185 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12186
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12187 if (added) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12188 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12189 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12190 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12191
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12192 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12193 * Parse the data file.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12194 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12195 * Adapted from http://www.kawa.net/works/js/jkl/js/jkl-parsexml.js by Yusuke Kawasaki
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12196 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12197 Timeplot.DefaultEventSource.prototype._parseText = function (text, separator) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12198 text = text.replace( /\r\n?/g, "\n" ); // normalize newlines
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12199 var pos = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12200 var len = text.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12201 var table = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12202 while (pos < len) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12203 var line = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12204 if (text.charAt(pos) != '#') { // if it's not a comment, process
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12205 while (pos < len) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12206 if (text.charAt(pos) == '"') { // "..." quoted column
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12207 var nextquote = text.indexOf('"', pos+1 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12208 while (nextquote<len && nextquote > -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12209 if (text.charAt(nextquote+1) != '"') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12210 break; // end of column
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12211 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12212 nextquote = text.indexOf('"', nextquote + 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12213 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12214 if ( nextquote < 0 ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12215 // unclosed quote
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12216 } else if (text.charAt(nextquote + 1) == separator) { // end of column
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12217 var quoted = text.substr(pos + 1, nextquote-pos - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12218 quoted = quoted.replace(/""/g,'"');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12219 line[line.length] = quoted;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12220 pos = nextquote + 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12221 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12222 } else if (text.charAt(nextquote + 1) == "\n" || // end of line
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12223 len == nextquote + 1 ) { // end of file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12224 var quoted = text.substr(pos + 1, nextquote-pos - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12225 quoted = quoted.replace(/""/g,'"');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12226 line[line.length] = quoted;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12227 pos = nextquote + 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12228 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12229 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12230 // invalid column
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12231 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12232 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12233 var nextseparator = text.indexOf(separator, pos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12234 var nextnline = text.indexOf("\n", pos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12235 if (nextnline < 0) nextnline = len;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12236 if (nextseparator > -1 && nextseparator < nextnline) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12237 line[line.length] = text.substr(pos, nextseparator-pos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12238 pos = nextseparator + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12239 } else { // end of line
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12240 line[line.length] = text.substr(pos, nextnline-pos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12241 pos = nextnline + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12242 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12243 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12244 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12245 } else { // if it's a comment, ignore
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12246 var nextnline = text.indexOf("\n", pos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12247 pos = (nextnline > -1) ? nextnline + 1 : cur;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12248 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12249 if (line.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12250 table[table.length] = line; // push line
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12251 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12252 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12253 if (table.length < 0) return; // null data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12254 return table;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12255 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12256
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12257 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12258 * Return the range of the loaded data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12259 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12260 Timeplot.DefaultEventSource.prototype.getRange = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12261 var earliestDate = this.getEarliestDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12262 var latestDate = this.getLatestDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12263 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12264 earliestDate: (earliestDate) ? earliestDate : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12265 latestDate: (latestDate) ? latestDate : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12266 min: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12267 max: 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12268 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12269 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12271 // -----------------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12272
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12273 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12274 * A NumericEvent is an Event that also contains an array of values,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12275 * one for each columns in the loaded data file.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12276 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12277 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12278 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12279 Timeplot.DefaultEventSource.NumericEvent = function(time, values) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12280 this._id = "e" + Math.round(Math.random() * 1000000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12281 this._time = time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12282 this._values = values;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12283 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12285 Timeplot.DefaultEventSource.NumericEvent.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12286 getID: function() { return this._id; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12287 getTime: function() { return this._time; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12288 getValues: function() { return this._values; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12289
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12290 // these are required by the EventSource
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12291 getStart: function() { return this._time; },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12292 getEnd: function() { return this._time; }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12293 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12294
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12295 // -----------------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12296
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12297 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12298 * A DataSource represent an abstract class that represents a monodimensional time series.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12299 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12300 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12301 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12302 Timeplot.DataSource = function(eventSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12303 this._eventSource = eventSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12304 var source = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12305 this._processingListener = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12306 onAddMany: function() { source._process(); },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12307 onClear: function() { source._clear(); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12308 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12309 this.addListener(this._processingListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12310 this._listeners = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12311 this._data = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12312 this._range = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12313 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12315 Timeplot.DataSource.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12316
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12317 _clear: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12318 this._data = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12319 this._range = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12320 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12321
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12322 _process: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12323 this._data = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12324 times: new Array(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12325 values: new Array()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12326 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12327 this._range = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12328 earliestDate: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12329 latestDate: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12330 min: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12331 max: 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12332 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12333 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12335 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12336 * Return the range of this data source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12337 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12338 getRange: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12339 return this._range;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12340 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12341
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12342 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12343 * Return the actual data that this data source represents.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12344 * NOTE: _data = { times: [], values: [] }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12345 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12346 getData: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12347 return this._data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12348 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12349
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12350 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12351 * Return the value associated with the given time in this time series
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12352 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12353 getValue: function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12354 if (this._data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12355 for (var i = 0; i < this._data.times.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12356 var l = this._data.times[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12357 if (l >= t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12358 return this._data.values[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12359 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12360 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12361 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12362 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12363 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12364
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12365 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12366 * Return the time of the data point closest to the given time.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12367 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12368 getClosestValidTime: function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12369 if (this._data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12370 for (var i = 0; i < this._data.times.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12371 var currentTime = this._data.times[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12372 if (currentTime >= t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12373 if (i <= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12374 return currentTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12375 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12376 var lastTime = this._data.times[i - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12377 // t must be between currentTime and lastTime.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12378 // Find the closest one.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12379 if (t - lastTime < currentTime - t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12380 return lastTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12381 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12382 return currentTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12384 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12385 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12386 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12387 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12388 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12389 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12390
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12391 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12392 * Add a listener to the underlying event source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12393 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12394 addListener: function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12395 this._eventSource.addListener(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12396 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12397
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12398 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12399 * Remove a listener from the underlying event source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12400 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12401 removeListener: function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12402 this._eventSource.removeListener(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12403 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12405 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12406 * Replace a listener from the underlying event source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12407 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12408 replaceListener: function(oldListener, newListener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12409 this.removeListener(oldListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12410 this.addListener(newListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12411 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12412
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12413 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12414
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12415 // -----------------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12416
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12417 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12418 * Implementation of a DataSource that extracts the time series out of a
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12419 * single column from the events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12420 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12421 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12422 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12423 Timeplot.ColumnSource = function(eventSource, column) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12424 Timeplot.DataSource.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12425 this._column = column - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12426 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12427
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12428 Object.extend(Timeplot.ColumnSource.prototype,Timeplot.DataSource.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12429
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12430 Timeplot.ColumnSource.prototype.dispose = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12431 this.removeListener(this._processingListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12432 this._clear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12433 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12434
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12435 Timeplot.ColumnSource.prototype._process = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12436 var count = this._eventSource.getCount();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12437 var times = new Array(count);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12438 var values = new Array(count);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12439 var min = Number.MAX_VALUE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12440 var max = Number.MIN_VALUE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12441 var i = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12442
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12443 var iterator = this._eventSource.getAllEventIterator();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12444 while (iterator.hasNext()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12445 var event = iterator.next();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12446 var time = event.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12447 times[i] = time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12448 var value = this._getValue(event);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12449 if (!isNaN(value)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12450 if (value < min) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12451 min = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12452 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12453 if (value > max) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12454 max = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12455 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12456 values[i] = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12458 i++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12459 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12460
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12461 this._data = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12462 times: times,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12463 values: values
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12464 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12465
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12466 if (max == Number.MIN_VALUE) max = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12467
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12468 this._range = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12469 earliestDate: this._eventSource.getEarliestDate(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12470 latestDate: this._eventSource.getLatestDate(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12471 min: min,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12472 max: max
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12473 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12474 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12475
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12476 Timeplot.ColumnSource.prototype._getValue = function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12477 return parseFloat(event.getValues()[this._column]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12478 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12479
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12480 // ---------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12481
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12482 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12483 * Data Source that generates the time series out of the difference
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12484 * between the first and the second column
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12485 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12486 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12487 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12488 Timeplot.ColumnDiffSource = function(eventSource, column1, column2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12489 Timeplot.ColumnSource.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12490 this._column2 = column2 - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12491 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12492
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12493 Object.extend(Timeplot.ColumnDiffSource.prototype,Timeplot.ColumnSource.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12494
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12495 Timeplot.ColumnDiffSource.prototype._getValue = function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12496 var a = parseFloat(event.getValues()[this._column]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12497 var b = parseFloat(event.getValues()[this._column2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12498 return a - b;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12499 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12500 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12501 * Geometries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12502 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12503 * @fileOverview Geometries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12504 * @name Geometries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12505 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12507 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12508 * This is the constructor for the default value geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12509 * A value geometry is what regulates mapping of the plot values to the screen y coordinate.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12510 * If two plots share the same value geometry, they will be drawn using the same scale.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12511 * If "min" and "max" parameters are not set, the geometry will stretch itself automatically
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12512 * so that the entire plot will be drawn without overflowing. The stretching happens also
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12513 * when a geometry is shared between multiple plots, the one with the biggest range will
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12514 * win over the others.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12515 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12516 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12517 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12518 Timeplot.DefaultValueGeometry = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12519 if (!params) params = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12520 this._id = ("id" in params) ? params.id : "g" + Math.round(Math.random() * 1000000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12521 this._axisColor = ("axisColor" in params) ? ((typeof params.axisColor == "string") ? new Timeplot.Color(params.axisColor) : params.axisColor) : new Timeplot.Color("#606060"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12522 this._gridColor = ("gridColor" in params) ? ((typeof params.gridColor == "string") ? new Timeplot.Color(params.gridColor) : params.gridColor) : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12523 this._gridLineWidth = ("gridLineWidth" in params) ? params.gridLineWidth : 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12524 this._axisLabelsPlacement = ("axisLabelsPlacement" in params) ? params.axisLabelsPlacement : "right";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12525 this._gridSpacing = ("gridSpacing" in params) ? params.gridStep : 50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12526 this._gridType = ("gridType" in params) ? params.gridType : "short";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12527 this._gridShortSize = ("gridShortSize" in params) ? params.gridShortSize : 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12528 this._minValue = ("min" in params) ? params.min : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12529 this._maxValue = ("max" in params) ? params.max : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12530 this._linMap = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12531 direct: function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12532 return v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12533 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12534 inverse: function(y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12535 return y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12536 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12538 this._map = this._linMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12539 this._labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12540 this._grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12541 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12542
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12543 Timeplot.DefaultValueGeometry.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12544
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12545 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12546 * Since geometries can be reused across timeplots, we need to call this function
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12547 * before we can paint using this geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12548 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12549 setTimeplot: function(timeplot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12550 this._timeplot = timeplot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12551 this._canvas = timeplot.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12552 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12553 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12554
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12555 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12556 * Called by all the plot layers this geometry is associated with
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12557 * to update the value range. Unless min/max values are specified
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12558 * in the parameters, the biggest value range will be used.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12559 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12560 setRange: function(range) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12561 if ((this._minValue == null) || ((this._minValue != null) && (range.min < this._minValue))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12562 this._minValue = range.min;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12563 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12564 if ((this._maxValue == null) || ((this._maxValue != null) && (range.max * 1.05 > this._maxValue))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12565 this._maxValue = range.max * 1.05; // get a little more head room to avoid hitting the ceiling
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12566 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12567
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12568 this._updateMappedValues();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12569
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12570 if (!(this._minValue == 0 && this._maxValue == 0)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12571 this._grid = this._calculateGrid();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12572 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12573 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12574
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12575 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12576 * Called after changing ranges or canvas size to reset the grid values
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12577 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12578 reset: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12579 this._clearLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12580 this._updateMappedValues();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12581 this._grid = this._calculateGrid();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12582 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12584 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12585 * Map the given value to a y screen coordinate.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12586 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12587 toScreen: function(value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12588 if (this._canvas && this._maxValue) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12589 var v = value - this._minValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12590 return this._canvas.height * (this._map.direct(v)) / this._mappedRange;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12591 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12592 return -50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12593 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12594 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12595
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12596 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12597 * Map the given y screen coordinate to a value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12598 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12599 fromScreen: function(y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12600 if (this._canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12601 return this._map.inverse(this._mappedRange * y / this._canvas.height) + this._minValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12602 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12603 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12604 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12605 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12606
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12607 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12608 * Each geometry is also a painter and paints the value grid and grid labels.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12609 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12610 paint: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12611 if (this._timeplot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12612 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12613
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12614 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12615
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12616 // paint grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12617 if (this._gridColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12618 var gridGradient = ctx.createLinearGradient(0,0,0,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12619 gridGradient.addColorStop(0, this._gridColor.toHexString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12620 gridGradient.addColorStop(0.3, this._gridColor.toHexString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12621 gridGradient.addColorStop(1, "rgba(255,255,255,0.5)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12623 ctx.lineWidth = this._gridLineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12624 ctx.strokeStyle = gridGradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12626 for (var i = 0; i < this._grid.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12627 var tick = this._grid[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12628 var y = Math.floor(tick.y) + 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12629 if (typeof tick.label != "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12630 if (this._axisLabelsPlacement == "left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12631 var div = this._timeplot.putText(this._id + "-" + i, tick.label,"timeplot-grid-label",{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12632 left: 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12633 bottom: y + 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12634 color: this._gridColor.toHexString(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12635 visibility: "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12636 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12637 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12638 } else if (this._axisLabelsPlacement == "right") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12639 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label",{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12640 right: 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12641 bottom: y + 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12642 color: this._gridColor.toHexString(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12643 visibility: "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12644 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12645 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12646 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12647 if (y + div.clientHeight < this._canvas.height + 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12648 div.style.visibility = "visible"; // avoid the labels that would overflow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12649 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12650 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12651
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12652 // draw grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12653 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12654 if (this._gridType == "long" || tick.label == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12655 ctx.moveTo(0, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12656 ctx.lineTo(this._canvas.width, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12657 } else if (this._gridType == "short") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12658 if (this._axisLabelsPlacement == "left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12659 ctx.moveTo(0, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12660 ctx.lineTo(this._gridShortSize, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12661 } else if (this._axisLabelsPlacement == "right") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12662 ctx.moveTo(this._canvas.width, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12663 ctx.lineTo(this._canvas.width - this._gridShortSize, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12664 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12665 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12666 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12667 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12668 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12669
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12670 // paint axis
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12671 var axisGradient = ctx.createLinearGradient(0,0,0,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12672 axisGradient.addColorStop(0, this._axisColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12673 axisGradient.addColorStop(0.5, this._axisColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12674 axisGradient.addColorStop(1, "rgba(255,255,255,0.5)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12675
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12676 ctx.lineWidth = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12677 ctx.strokeStyle = axisGradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12678
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12679 // left axis
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12680 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12681 ctx.moveTo(0,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12682 ctx.lineTo(0,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12683 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12684
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12685 // right axis
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12686 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12687 ctx.moveTo(this._canvas.width,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12688 ctx.lineTo(this._canvas.width,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12689 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12690 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12691 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12692
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12693 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12694 * Removes all the labels that were added by this geometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12695 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12696 _clearLabels: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12697 for (var i = 0; i < this._labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12698 var l = this._labels[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12699 var parent = l.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12700 if (parent) parent.removeChild(l);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12701 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12702 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12703
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12704 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12705 * This function calculates the grid spacing that it will be used
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12706 * by this geometry to draw the grid in order to reduce clutter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12707 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12708 _calculateGrid: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12709 var grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12710
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12711 if (!this._canvas || this._valueRange == 0) return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12712
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12713 var power = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12714 if (this._valueRange > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12715 while (Math.pow(10,power) < this._valueRange) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12716 power++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12717 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12718 power--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12719 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12720 while (Math.pow(10,power) > this._valueRange) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12721 power--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12722 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12723 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12724
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12725 var unit = Math.pow(10,power);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12726 var inc = unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12727 while (true) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12728 var dy = this.toScreen(this._minValue + inc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12729
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12730 while (dy < this._gridSpacing) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12731 inc += unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12732 dy = this.toScreen(this._minValue + inc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12733 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12734
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12735 if (dy > 2 * this._gridSpacing) { // grids are too spaced out
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12736 unit /= 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12737 inc = unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12738 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12739 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12740 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12742
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12743 var v = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12744 var y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12745 if (this._minValue >= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12746 while (y < this._canvas.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12747 if (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12748 grid.push({ y: y, label: v });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12749 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12750 v += inc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12751 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12752 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12753 } else if (this._maxValue <= 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12754 while (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12755 if (y < this._canvas.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12756 grid.push({ y: y, label: v });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12758 v -= inc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12759 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12760 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12761 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12762 while (y < this._canvas.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12763 if (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12764 grid.push({ y: y, label: v });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12765 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12766 v += inc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12767 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12768 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12769 v = -inc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12770 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12771 while (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12772 if (y < this._canvas.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12773 grid.push({ y: y, label: v });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12774 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12775 v -= inc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12776 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12778 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12780 return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12781 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12783 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12784 * Update the values that are used by the paint function so that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12785 * we don't have to calculate them at every repaint.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12786 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12787 _updateMappedValues: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12788 this._valueRange = Math.abs(this._maxValue - this._minValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12789 this._mappedRange = this._map.direct(this._valueRange);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12790 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12791
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12792 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12793
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12794 // --------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12795
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12796 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12797 * This is the constructor for a Logarithmic value geometry, which
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12798 * is useful when plots have values in different magnitudes but
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12799 * exhibit similar trends and such trends want to be shown on the same
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12800 * plot (here a cartesian geometry would make the small magnitudes
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12801 * disappear).
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12802 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12803 * NOTE: this class extends Timeplot.DefaultValueGeometry and inherits
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12804 * all of the methods of that class. So refer to that class.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12805 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12806 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12807 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12808 Timeplot.LogarithmicValueGeometry = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12809 Timeplot.DefaultValueGeometry.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12810 this._logMap = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12811 direct: function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12812 return Math.log(v + 1) / Math.log(10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12813 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12814 inverse: function(y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12815 return Math.exp(Math.log(10) * y) - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12816 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12817 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12818 this._mode = "log";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12819 this._map = this._logMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12820 this._calculateGrid = this._logarithmicCalculateGrid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12821 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12822
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12823 Timeplot.LogarithmicValueGeometry.prototype._linearCalculateGrid = Timeplot.DefaultValueGeometry.prototype._calculateGrid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12824
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12825 Object.extend(Timeplot.LogarithmicValueGeometry.prototype,Timeplot.DefaultValueGeometry.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12827 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12828 * This function calculates the grid spacing that it will be used
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12829 * by this geometry to draw the grid in order to reduce clutter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12830 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12831 Timeplot.LogarithmicValueGeometry.prototype._logarithmicCalculateGrid = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12832 var grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12833
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12834 if (!this._canvas || this._valueRange == 0) return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12835
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12836 var v = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12837 var y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12838 while (y < this._canvas.height || isNaN(y)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12839 if (y > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12840 grid.push({ y: y, label: v });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12841 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12842 v *= 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12843 y = this.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12844 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12845
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12846 return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12847 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12848
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12849 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12850 * Turn the logarithmic scaling off.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12851 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12852 Timeplot.LogarithmicValueGeometry.prototype.actLinear = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12853 this._mode = "lin";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12854 this._map = this._linMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12855 this._calculateGrid = this._linearCalculateGrid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12856 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12857 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12858
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12859 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12860 * Turn the logarithmic scaling on.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12861 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12862 Timeplot.LogarithmicValueGeometry.prototype.actLogarithmic = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12863 this._mode = "log";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12864 this._map = this._logMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12865 this._calculateGrid = this._logarithmicCalculateGrid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12866 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12867 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12868
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12869 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12870 * Toggle logarithmic scaling seeting it to on if off and viceversa.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12871 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12872 Timeplot.LogarithmicValueGeometry.prototype.toggle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12873 if (this._mode == "log") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12874 this.actLinear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12875 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12876 this.actLogarithmic();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12877 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12878 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12879
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12880 // -----------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12881
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12882 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12883 * This is the constructor for the default time geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12884 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12885 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12886 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12887 Timeplot.DefaultTimeGeometry = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12888 if (!params) params = {};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12889 this._id = ("id" in params) ? params.id : "g" + Math.round(Math.random() * 1000000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12890 this._locale = ("locale" in params) ? params.locale : "en";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12891 this._timeZone = ("timeZone" in params) ? params.timeZone : SimileAjax.DateTime.getTimezone();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12892 this._labeler = ("labeller" in params) ? params.labeller : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12893 this._axisColor = ("axisColor" in params) ? ((params.axisColor == "string") ? new Timeplot.Color(params.axisColor) : params.axisColor) : new Timeplot.Color("#606060"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12894 this._gridColor = ("gridColor" in params) ? ((params.gridColor == "string") ? new Timeplot.Color(params.gridColor) : params.gridColor) : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12895 this._gridLineWidth = ("gridLineWidth" in params) ? params.gridLineWidth : 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12896 this._axisLabelsPlacement = ("axisLabelsPlacement" in params) ? params.axisLabelsPlacement : "bottom";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12897 this._gridStep = ("gridStep" in params) ? params.gridStep : 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12898 this._gridStepRange = ("gridStepRange" in params) ? params.gridStepRange : 20;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12899 this._min = ("min" in params) ? params.min : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12900 this._max = ("max" in params) ? params.max : null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12901 this._timeValuePosition =("timeValuePosition" in params) ? params.timeValuePosition : "bottom";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12902 this._unit = ("unit" in params) ? params.unit : Timeline.NativeDateUnit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12903 this._linMap = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12904 direct: function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12905 return t;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12906 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12907 inverse: function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12908 return x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12909 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12910 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12911 this._map = this._linMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12912 if (!this._labeler)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12913 this._labeler = this._unit.createLabeller(this._locale, this._timeZone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12914 var dateParser = this._unit.getParser("iso8601");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12915 if (this._min && !this._min.getTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12916 this._min = dateParser(this._min);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12917 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12918 if (this._max && !this._max.getTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12919 this._max = dateParser(this._max);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12920 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12921 this._labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12922 this._grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12923 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12925 Timeplot.DefaultTimeGeometry.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12926
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12927 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12928 * Since geometries can be reused across timeplots, we need to call this function
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12929 * before we can paint using this geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12930 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12931 setTimeplot: function(timeplot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12932 this._timeplot = timeplot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12933 this._canvas = timeplot.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12934 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12935 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12936
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12937 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12938 * Called by all the plot layers this geometry is associated with
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12939 * to update the time range. Unless min/max values are specified
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12940 * in the parameters, the biggest range will be used.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12941 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12942 setRange: function(range) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12943 if (this._min) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12944 this._earliestDate = this._min;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12945 } else if (range.earliestDate && ((this._earliestDate == null) || ((this._earliestDate != null) && (range.earliestDate.getTime() < this._earliestDate.getTime())))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12946 this._earliestDate = range.earliestDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12947 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12948
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12949 if (this._max) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12950 this._latestDate = this._max;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12951 } else if (range.latestDate && ((this._latestDate == null) || ((this._latestDate != null) && (range.latestDate.getTime() > this._latestDate.getTime())))) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12952 this._latestDate = range.latestDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12953 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12954
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12955 if (!this._earliestDate && !this._latestDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12956 this._grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12957 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12958 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12959 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12960 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12961
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12962 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12963 * Called after changing ranges or canvas size to reset the grid values
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12964 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12965 reset: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12966 this._updateMappedValues();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12967 if (this._canvas) this._grid = this._calculateGrid();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12968 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12969
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12970 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12971 * Map the given date to a x screen coordinate.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12972 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12973 toScreen: function(time) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12974 if (this._canvas && this._latestDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12975 var t = time - this._earliestDate.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12976 var fraction = (this._mappedPeriod > 0) ? this._map.direct(t) / this._mappedPeriod : 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12977 return this._canvas.width * fraction;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12978 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12979 return -50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12980 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12981 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12982
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12983 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12984 * Map the given x screen coordinate to a date.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12985 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12986 fromScreen: function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12987 if (this._canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12988 return this._map.inverse(this._mappedPeriod * x / this._canvas.width) + this._earliestDate.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12989 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12990 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12991 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12992 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12993
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12994 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12995 * Get a period (in milliseconds) this time geometry spans.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12996 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12997 getPeriod: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12998 return this._period;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
12999 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13000
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13001 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13002 * Return the labeler that has been associated with this time geometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13003 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13004 getLabeler: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13005 return this._labeler;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13006 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13007
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13008 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13009 * Return the time unit associated with this time geometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13010 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13011 getUnit: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13012 return this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13013 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13014
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13015 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13016 * Each geometry is also a painter and paints the value grid and grid labels.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13017 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13018 paint: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13019 if (this._canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13020 var unit = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13021 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13022
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13023 var gradient = ctx.createLinearGradient(0,0,0,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13024
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13025 ctx.strokeStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13026 ctx.lineWidth = this._gridLineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13027 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13028
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13029 // paint grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13030 if (this._gridColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13031 gradient.addColorStop(0, this._gridColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13032 gradient.addColorStop(1, "rgba(255,255,255,0.9)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13033
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13034 for (var i = 0; i < this._grid.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13035 var tick = this._grid[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13036 var x = Math.floor(tick.x) + 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13037 if (this._axisLabelsPlacement == "top") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13038 var div = this._timeplot.putText(this._id + "-" + i, tick.label,"timeplot-grid-label",{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13039 left: x + 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13040 top: 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13041 visibility: "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13042 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13043 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13044 } else if (this._axisLabelsPlacement == "bottom") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13045 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label",{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13046 left: x + 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13047 bottom: 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13048 visibility: "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13049 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13050 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13051 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13052 if (x + div.clientWidth < this._canvas.width + 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13053 div.style.visibility = "visible"; // avoid the labels that would overflow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13054 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13055
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13056 // draw separator
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13057 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13058 ctx.moveTo(x,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13059 ctx.lineTo(x,this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13060 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13061 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13062 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13063
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13064 // paint axis
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13065 gradient.addColorStop(0, this._axisColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13066 gradient.addColorStop(1, "rgba(255,255,255,0.5)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13067
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13068 ctx.lineWidth = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13069 gradient.addColorStop(0, this._axisColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13070
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13071 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13072 ctx.moveTo(0,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13073 ctx.lineTo(this._canvas.width,0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13074 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13075 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13076 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13077
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13078 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13079 * This function calculates the grid spacing that it will be used
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13080 * by this geometry to draw the grid in order to reduce clutter.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13081 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13082 _calculateGrid: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13083 var grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13084
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13085 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13086 var u = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13087 var p = this._period;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13088
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13089 if (p == 0) return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13090
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13091 // find the time units nearest to the time period
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13092 if (p > time.gregorianUnitLengths[time.MILLENNIUM]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13093 unit = time.MILLENNIUM;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13094 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13095 for (var unit = time.MILLENNIUM; unit > 0; unit--) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13096 if (time.gregorianUnitLengths[unit-1] <= p && p < time.gregorianUnitLengths[unit]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13097 unit--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13098 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13099 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13100 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13101 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13102
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13103 var t = u.cloneValue(this._earliestDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13104
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13105 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13106 time.roundDownToInterval(t, unit, this._timeZone, 1, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13107 var x = this.toScreen(u.toNumber(t));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13108 switch (unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13109 case time.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13110 var l = t.toLocaleTimeString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13111 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13112 case time.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13113 var m = t.getMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13114 var l = t.getHours() + ":" + ((m < 10) ? "0" : "") + m;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13115 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13116 case time.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13117 var l = t.getHours() + ":00";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13118 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13119 case time.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13120 case time.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13121 case time.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13122 var l = t.toLocaleDateString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13123 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13124 case time.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13125 case time.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13126 case time.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13127 case time.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13128 var l = t.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13129 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13130 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13131 if (x > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13132 grid.push({ x: x, label: l });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13133 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13134 time.incrementByInterval(t, unit, this._timeZone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13135 } while (t.getTime() < this._latestDate.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13136
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13137 return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13138 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13139
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13140 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13141 * Clear labels generated by this time geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13142 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13143 _clearLabels: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13144 for (var i = 0; i < this._labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13145 var l = this._labels[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13146 var parent = l.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13147 if (parent) parent.removeChild(l);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13148 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13149 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13150
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13151 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13152 * Update the values that are used by the paint function so that
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13153 * we don't have to calculate them at every repaint.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13154 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13155 _updateMappedValues: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13156 if (this._latestDate && this._earliestDate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13157 this._period = this._latestDate.getTime() - this._earliestDate.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13158 this._mappedPeriod = this._map.direct(this._period);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13159 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13160 this._period = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13161 this._mappedPeriod = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13162 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13163 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13164
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13165 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13166
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13167 // --------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13168
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13169 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13170 * This is the constructor for the magnifying time geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13171 * Users can interact with this geometry and 'magnify' certain areas of the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13172 * plot to see the plot enlarged and resolve details that would otherwise
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13173 * get lost or cluttered with a linear time geometry.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13174 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13175 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13176 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13177 Timeplot.MagnifyingTimeGeometry = function(params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13178 Timeplot.DefaultTimeGeometry.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13179
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13180 var g = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13181 this._MagnifyingMap = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13182 direct: function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13183 if (t < g._leftTimeMargin) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13184 var x = t * g._leftRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13185 } else if ( g._leftTimeMargin < t && t < g._rightTimeMargin ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13186 var x = t * g._expandedRate + g._expandedTimeTranslation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13187 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13188 var x = t * g._rightRate + g._rightTimeTranslation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13189 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13190 return x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13191 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13192 inverse: function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13193 if (x < g._leftScreenMargin) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13194 var t = x / g._leftRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13195 } else if ( g._leftScreenMargin < x && x < g._rightScreenMargin ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13196 var t = x / g._expandedRate + g._expandedScreenTranslation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13197 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13198 var t = x / g._rightRate + g._rightScreenTranslation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13199 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13200 return t;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13201 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13202 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13203
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13204 this._mode = "lin";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13205 this._map = this._linMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13206 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13207
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13208 Object.extend(Timeplot.MagnifyingTimeGeometry.prototype,Timeplot.DefaultTimeGeometry.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13209
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13210 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13211 * Initialize this geometry associating it with the given timeplot and
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13212 * register the geometry event handlers to the timeplot so that it can
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13213 * interact with the user.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13214 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13215 Timeplot.MagnifyingTimeGeometry.prototype.initialize = function(timeplot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13216 Timeplot.DefaultTimeGeometry.prototype.initialize.apply(this, arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13217
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13218 if (!this._lens) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13219 this._lens = this._timeplot.putDiv("lens","timeplot-lens");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13220 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13222 var period = 1000 * 60 * 60 * 24 * 30; // a month in the magnifying lens
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13223
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13224 var geometry = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13225
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13226 var magnifyWith = function(lens) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13227 var aperture = lens.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13228 var loc = geometry._timeplot.locate(lens);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13229 geometry.setMagnifyingParams(loc.x + aperture / 2, aperture, period);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13230 geometry.actMagnifying();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13231 geometry._timeplot.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13232 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13233
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13234 var canvasMouseDown = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13235 geometry._canvas.startCoords = SimileAjax.DOM.getEventRelativeCoordinates(evt,elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13236 geometry._canvas.pressed = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13237 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13238
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13239 var canvasMouseUp = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13240 geometry._canvas.pressed = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13241 var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt,elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13242 if (Timeplot.Math.isClose(coords,geometry._canvas.startCoords,5)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13243 geometry._lens.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13244 geometry.actLinear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13245 geometry._timeplot.paint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13246 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13247 geometry._lens.style.cursor = "move";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13248 magnifyWith(geometry._lens);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13249 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13250 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13251
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13252 var canvasMouseMove = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13253 if (geometry._canvas.pressed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13254 var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt,elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13255 if (coords.x < 0) coords.x = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13256 if (coords.x > geometry._canvas.width) coords.x = geometry._canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13257 geometry._timeplot.placeDiv(geometry._lens, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13258 left: geometry._canvas.startCoords.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13259 width: coords.x - geometry._canvas.startCoords.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13260 bottom: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13261 height: geometry._canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13262 display: "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13263 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13264 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13265 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13266
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13267 var lensMouseDown = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13268 geometry._lens.startCoords = SimileAjax.DOM.getEventRelativeCoordinates(evt,elmt);;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13269 geometry._lens.pressed = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13270 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13271
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13272 var lensMouseUp = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13273 geometry._lens.pressed = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13274 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13276 var lensMouseMove = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13277 if (geometry._lens.pressed) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13278 var coords = SimileAjax.DOM.getEventRelativeCoordinates(evt,elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13279 var lens = geometry._lens;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13280 var left = lens.offsetLeft + coords.x - lens.startCoords.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13281 if (left < geometry._timeplot._paddingX) left = geometry._timeplot._paddingX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13282 if (left + lens.clientWidth > geometry._canvas.width - geometry._timeplot._paddingX) left = geometry._canvas.width - lens.clientWidth + geometry._timeplot._paddingX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13283 lens.style.left = left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13284 magnifyWith(lens);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13285 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13286 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13287
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13288 if (!this._canvas.instrumented) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13289 SimileAjax.DOM.registerEvent(this._canvas, "mousedown", canvasMouseDown);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13290 SimileAjax.DOM.registerEvent(this._canvas, "mousemove", canvasMouseMove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13291 SimileAjax.DOM.registerEvent(this._canvas, "mouseup" , canvasMouseUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13292 SimileAjax.DOM.registerEvent(this._canvas, "mouseup" , lensMouseUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13293 this._canvas.instrumented = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13294 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13295
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13296 if (!this._lens.instrumented) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13297 SimileAjax.DOM.registerEvent(this._lens, "mousedown", lensMouseDown);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13298 SimileAjax.DOM.registerEvent(this._lens, "mousemove", lensMouseMove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13299 SimileAjax.DOM.registerEvent(this._lens, "mouseup" , lensMouseUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13300 SimileAjax.DOM.registerEvent(this._lens, "mouseup" , canvasMouseUp);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13301 this._lens.instrumented = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13302 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13303 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13304
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13305 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13306 * Set the Magnifying parameters. c is the location in pixels where the Magnifying
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13307 * center should be located in the timeplot, a is the aperture in pixel of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13308 * the Magnifying and b is the time period in milliseconds that the Magnifying
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13309 * should span.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13310 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13311 Timeplot.MagnifyingTimeGeometry.prototype.setMagnifyingParams = function(c,a,b) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13312 a = a / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13313 b = b / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13315 var w = this._canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13316 var d = this._period;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13317
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13318 if (c < 0) c = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13319 if (c > w) c = w;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13320
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13321 if (c - a < 0) a = c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13322 if (c + a > w) a = w - c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13323
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13324 var ct = this.fromScreen(c) - this._earliestDate.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13325 if (ct - b < 0) b = ct;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13326 if (ct + b > d) b = d - ct;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13327
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13328 this._centerX = c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13329 this._centerTime = ct;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13330 this._aperture = a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13331 this._aperturePeriod = b;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13332
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13333 this._leftScreenMargin = this._centerX - this._aperture;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13334 this._rightScreenMargin = this._centerX + this._aperture;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13335 this._leftTimeMargin = this._centerTime - this._aperturePeriod;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13336 this._rightTimeMargin = this._centerTime + this._aperturePeriod;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13338 this._leftRate = (c - a) / (ct - b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13339 this._expandedRate = a / b;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13340 this._rightRate = (w - c - a) / (d - ct - b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13341
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13342 this._expandedTimeTranslation = this._centerX - this._centerTime * this._expandedRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13343 this._expandedScreenTranslation = this._centerTime - this._centerX / this._expandedRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13344 this._rightTimeTranslation = (c + a) - (ct + b) * this._rightRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13345 this._rightScreenTranslation = (ct + b) - (c + a) / this._rightRate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13346
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13347 this._updateMappedValues();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13348 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13349
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13350 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13351 * Turn magnification off.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13352 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13353 Timeplot.MagnifyingTimeGeometry.prototype.actLinear = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13354 this._mode = "lin";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13355 this._map = this._linMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13356 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13357 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13358
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13359 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13360 * Turn magnification on.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13361 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13362 Timeplot.MagnifyingTimeGeometry.prototype.actMagnifying = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13363 this._mode = "Magnifying";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13364 this._map = this._MagnifyingMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13365 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13366 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13367
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13368 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13369 * Toggle magnification.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13370 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13371 Timeplot.MagnifyingTimeGeometry.prototype.toggle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13372 if (this._mode == "Magnifying") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13373 this.actLinear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13374 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13375 this.actMagnifying();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13376 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13377 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13379 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13380 * Color
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13381 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13382 * @fileOverview Color
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13383 * @name Color
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13384 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13386 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13387 * Inspired by Plotr
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13388 * Copyright 2007 (c) Bas Wenneker <sabmann[a]gmail[d]com>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13389 * For use under the BSD license. <http://www.solutoire.com/plotr>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13390 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13391
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13392 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13393 * Create a Color object that can be used to manipulate colors programmatically.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13394 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13395 Timeplot.Color = function(color) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13396 this._fromHex(color);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13397 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13398
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13399 Timeplot.Color.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13400
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13401 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13402 * Sets the RGB values of this coor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13403 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13404 * @param {Number} r,g,b Red green and blue values (between 0 and 255)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13405 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13406 set: function (r,g,b,a) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13407 this.r = r;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13408 this.g = g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13409 this.b = b;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13410 this.a = (a) ? a : 1.0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13411 return this.check();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13412 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13413
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13414 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13415 * Set the color transparency
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13416 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13417 * @param {float} a Transparency value, between 0.0 (fully transparent) and 1.0 (fully opaque).
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13418 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13419 transparency: function(a) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13420 this.a = a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13421 return this.check();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13422 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13423
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13424 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13425 * Lightens the color.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13426 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13427 * @param {integer} level Level to lighten the color with.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13428 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13429 lighten: function(level) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13430 var color = new Timeplot.Color();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13431 return color.set(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13432 this.r += parseInt(level, 10),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13433 this.g += parseInt(level, 10),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13434 this.b += parseInt(level, 10)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13435 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13436 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13437
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13438 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13439 * Darkens the color.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13440 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13441 * @param {integer} level Level to darken the color with.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13442 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13443 darken: function(level){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13444 var color = new Timeplot.Color();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13445 return color.set(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13446 this.r -= parseInt(level, 10),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13447 this.g -= parseInt(level, 10),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13448 this.b -= parseInt(level, 10)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13449 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13450 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13451
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13452 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13453 * Checks and validates if the hex values r, g and b are
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13454 * between 0 and 255.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13455 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13456 check: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13457 if (this.r > 255) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13458 this.r = 255;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13459 } else if (this.r < 0){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13460 this.r = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13461 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13462 if (this.g > 255) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13463 this.g = 255;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13464 } else if (this.g < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13465 this.g = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13466 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13467 if (this.b > 255){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13468 this.b = 255;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13469 } else if (this.b < 0){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13470 this.b = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13471 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13472 if (this.a > 1.0){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13473 this.a = 1.0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13474 } else if (this.a < 0.0){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13475 this.a = 0.0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13476 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13477 return this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13478 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13479
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13480 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13481 * Returns a string representation of this color.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13482 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13483 * @param {float} alpha (optional) Transparency value, between 0.0 (fully transparent) and 1.0 (fully opaque).
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13484 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13485 toString: function(alpha) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13486 var a = (alpha) ? alpha : ((this.a) ? this.a : 1.0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13487 return 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + a + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13488 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13489
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13490 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13491 * Returns the hexadecimal representation of this color (without the alpha channel as hex colors don't support it)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13492 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13493 toHexString: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13494 return "#" + this._toHex(this.r) + this._toHex(this.g) + this._toHex(this.b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13495 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13496
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13497 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13498 * Parses and stores the hex values of the input color string.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13499 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13500 * @param {String} color Hex or rgb() css string.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13501 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13502 _fromHex: function(color) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13503 if(/^#?([\da-f]{3}|[\da-f]{6})$/i.test(color)){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13504 color = color.replace(/^#/, '').replace(/^([\da-f])([\da-f])([\da-f])$/i, "$1$1$2$2$3$3");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13505 this.r = parseInt(color.substr(0,2), 16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13506 this.g = parseInt(color.substr(2,2), 16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13507 this.b = parseInt(color.substr(4,2), 16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13508 } else if(/^rgb *\( *\d{0,3} *, *\d{0,3} *, *\d{0,3} *\)$/i.test(color)){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13509 color = color.match(/^rgb *\( *(\d{0,3}) *, *(\d{0,3}) *, *(\d{0,3}) *\)$/i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13510 this.r = parseInt(color[1], 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13511 this.g = parseInt(color[2], 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13512 this.b = parseInt(color[3], 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13513 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13514 this.a = 1.0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13515 return this.check();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13516 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13517
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13518 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13519 * Returns an hexadecimal representation of a 8 bit integer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13520 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13521 _toHex: function(dec) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13522 var hex = "0123456789ABCDEF"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13523 if (dec < 0) return "00";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13524 if (dec > 255) return "FF";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13525 var i = Math.floor(dec / 16);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13526 var j = dec % 16;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13527 return hex.charAt(i) + hex.charAt(j);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13528 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13529
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13530 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13531 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13532 * Math Utility functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13533 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13534 * @fileOverview Math Utility functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13535 * @name Math
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13536 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13537
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13538 Timeplot.Math = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13539
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13540 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13541 * Evaluates the range (min and max values) of the given array
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13542 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13543 range: function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13544 var F = f.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13545 var min = Number.MAX_VALUE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13546 var max = Number.MIN_VALUE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13548 for (var t = 0; t < F; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13549 var value = f[t];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13550 if (value < min) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13551 min = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13552 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13553 if (value > max) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13554 max = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13556 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13557
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13558 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13559 min: min,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13560 max: max
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13561 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13562 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13563
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13564 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13565 * Evaluates the windows average of a given array based on the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13566 * given window size
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13567 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13568 movingAverage: function(f, size) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13569 var F = f.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13570 var g = new Array(F);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13571 for (var n = 0; n < F; n++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13572 var value = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13573 for (var m = n - size; m < n + size; m++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13574 if (m < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13575 var v = f[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13576 } else if (m >= F) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13577 var v = g[n-1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13578 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13579 var v = f[m];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13580 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13581 value += v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13582 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13583 g[n] = value / (2 * size);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13584 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13585 return g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13586 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13587
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13588 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13589 * Returns an array with the integral of the given array
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13590 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13591 integral: function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13592 var F = f.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13594 var g = new Array(F);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13595 var sum = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13596
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13597 for (var t = 0; t < F; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13598 sum += f[t];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13599 g[t] = sum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13600 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13601
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13602 return g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13603 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13604
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13605 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13606 * Normalizes an array so that its complete integral is 1.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13607 * This is useful to obtain arrays that preserve the overall
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13608 * integral of a convolution.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13609 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13610 normalize: function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13611 var F = f.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13612 var sum = 0.0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13613
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13614 for (var t = 0; t < F; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13615 sum += f[t];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13616 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13618 for (var t = 0; t < F; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13619 f[t] /= sum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13620 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13621
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13622 return f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13623 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13624
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13625 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13626 * Calculates the convolution between two arrays
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13627 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13628 convolution: function(f,g) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13629 var F = f.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13630 var G = g.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13631
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13632 var c = new Array(F);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13633
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13634 for (var m = 0; m < F; m++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13635 var r = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13636 var end = (m + G < F) ? m + G : F;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13637 for (var n = m; n < end; n++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13638 var a = f[n - G];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13639 var b = g[n - m];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13640 r += a * b;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13641 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13642 c[m] = r;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13643 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13644
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13645 return c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13646 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13647
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13648 // ------ Array generators -------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13649 // Functions that generate arrays based on mathematical functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13650 // Normally these are used to produce operators by convolving them with the input array
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13651 // The returned arrays have the property of having
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13652
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13653 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13654 * Generate the heavyside step function of given size
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13655 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13656 heavyside: function(size) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13657 var f = new Array(size);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13658 var value = 1 / size;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13659 for (var t = 0; t < size; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13660 f[t] = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13661 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13662 return f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13663 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13664
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13665 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13666 * Generate the gaussian function so that at the given 'size' it has value 'threshold'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13667 * and make sure its integral is one.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13668 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13669 gaussian: function(size, threshold) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13670 with (Math) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13671 var radius = size / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13672 var variance = radius * radius / log(threshold);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13673 var g = new Array(size);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13674 for (var t = 0; t < size; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13675 var l = t - radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13676 g[t] = exp(-variance * l * l);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13677 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13678 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13679
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13680 return this.normalize(g);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13681 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13682
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13683 // ---- Utility Methods --------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13684
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13685 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13686 * Return x with n significant figures
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13687 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13688 round: function(x,n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13689 with (Math) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13690 if (abs(x) > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13691 var l = floor(log(x)/log(10));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13692 var d = round(exp((l-n+1)*log(10)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13693 var y = round(round(x / d) * d);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13694 return y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13695 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13696 log("FIXME(SM): still to implement for 0 < abs(x) < 1");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13697 return x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13698 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13699 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13700 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13701
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13702 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13703 * Return the hyperbolic tangent of x
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13704 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13705 tanh: function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13706 if (x > 5) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13707 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13708 } else if (x < 5) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13709 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13710 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13711 var expx2 = Math.exp(2 * x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13712 return (expx2 - 1) / (expx2 + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13713 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13714 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13715
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13716 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13717 * Returns true if |a.x - b.x| < value && | a.y - b.y | < value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13718 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13719 isClose: function(a,b,value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13720 return (a && b && Math.abs(a.x - b.x) < value && Math.abs(a.y - b.y) < value);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13721 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13722
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13723 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13724 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13725 * Processing Data Source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13726 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13727 * @fileOverview Processing Data Source and Operators
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13728 * @name Processor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13729 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13730
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13731 /* -----------------------------------------------------------------------------
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13732 * Operators
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13733 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13734 * These are functions that can be used directly as Timeplot.Processor operators
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13735 * ----------------------------------------------------------------------------- */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13736
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13737 Timeplot.Operator = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13738
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13739 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13740 * This is the operator used when you want to draw the cumulative sum
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13741 * of a time series and not, for example, their daily values.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13742 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13743 sum: function(data, params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13744 return Timeplot.Math.integral(data.values);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13745 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13746
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13747 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13748 * This is the operator that is used to 'smooth' a given time series
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13749 * by taking the average value of a moving window centered around
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13750 * each value. The size of the moving window is influenced by the 'size'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13751 * parameters in the params map.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13752 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13753 average: function(data, params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13754 var size = ("size" in params) ? params.size : 30;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13755 var result = Timeplot.Math.movingAverage(data.values, size);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13756 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13758 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13759
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13760 /*==================================================
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13761 * Processing Data Source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13762 *==================================================*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13763
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13764 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13765 * A Processor is a special DataSource that can apply an Operator
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13766 * to the DataSource values and thus return a different one.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13767 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13768 * @constructor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13769 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13770 Timeplot.Processor = function(dataSource, operator, params) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13771 this._dataSource = dataSource;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13772 this._operator = operator;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13773 this._params = params;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13774
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13775 this._data = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13776 times: new Array(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13777 values: new Array()
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13778 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13780 this._range = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13781 earliestDate: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13782 latestDate: null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13783 min: 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13784 max: 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13785 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13786
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13787 var processor = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13788 this._processingListener = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13789 onAddMany: function() { processor._process(); },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13790 onClear: function() { processor._clear(); }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13791 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13792 this.addListener(this._processingListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13793 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13794
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13795 Timeplot.Processor.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13796
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13797 _clear: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13798 this.removeListener(this._processingListener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13799 this._dataSource._clear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13800 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13801
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13802 _process: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13803 // this method requires the dataSource._process() method to be
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13804 // called first as to setup the data and range used below
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13805 // this should be guaranteed by the order of the listener registration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13806
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13807 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13808 var range = this._dataSource.getRange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13809
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13810 var newValues = this._operator(data, this._params);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13811 var newValueRange = Timeplot.Math.range(newValues);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13812
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13813 this._data = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13814 times: data.times,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13815 values: newValues
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13816 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13817
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13818 this._range = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13819 earliestDate: range.earliestDate,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13820 latestDate: range.latestDate,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13821 min: newValueRange.min,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13822 max: newValueRange.max
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13823 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13824 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13825
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13826 getRange: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13827 return this._range;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13828 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13829
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13830 getData: function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13831 return this._data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13832 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13833
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13834 getValue: Timeplot.DataSource.prototype.getValue,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13835
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13836 getClosestValidTime: Timeplot.DataSource.prototype.getClosestValidTime,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13837
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13838 addListener: function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13839 this._dataSource.addListener(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13840 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13841
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13842 removeListener: function(listener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13843 this._dataSource.removeListener(listener);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13844 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13846 /*----------------------------------------------------------------------------\
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13847 | Range Class |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13848 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13849 | Created by Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13850 | (http://webfx.eae.net/contact.html#erik) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13851 | For WebFX (http://webfx.eae.net/) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13852 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13853 | Used to model the data used when working with sliders, scrollbars and |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13854 | progress bars. Based on the ideas of the javax.swing.BoundedRangeModel |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13855 | interface defined by Sun for Java; http://java.sun.com/products/jfc/ |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13856 | swingdoc-api-1.0.3/com/sun/java/swing/BoundedRangeModel.html |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13857 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13858 | Copyright (c) 2002, 2005, 2006 Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13859 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13860 | Licensed under the Apache License, Version 2.0 (the "License"); you may not |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13861 | use this file except in compliance with the License. You may obtain a copy |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13862 | of the License at http://www.apache.org/licenses/LICENSE-2.0 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13863 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13864 | Unless required by applicable law or agreed to in writing, software |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13865 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13866 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13867 | License for the specific language governing permissions and limitations |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13868 | under the License. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13869 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13870 | 2002-10-14 | Original version released |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13871 | 2005-10-27 | Use Math.round instead of Math.floor |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13872 | 2006-05-28 | Changed license to Apache Software License 2.0. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13873 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13874 | Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13875 \----------------------------------------------------------------------------*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13876
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13877
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13878 function Range() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13879 this._value = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13880 this._minimum = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13881 this._maximum = 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13882 this._extent = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13883
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13884 this._isChanging = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13885 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13886
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13887 Range.prototype.setValue = function (value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13888 value = Math.round(parseFloat(value));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13889 if (isNaN(value)) return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13890 if (this._value != value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13891 if (value + this._extent > this._maximum)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13892 this._value = this._maximum - this._extent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13893 else if (value < this._minimum)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13894 this._value = this._minimum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13895 else
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13896 this._value = value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13897 if (!this._isChanging && typeof this.onchange == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13898 this.onchange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13899 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13900 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13901
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13902 Range.prototype.getValue = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13903 return this._value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13904 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13906 Range.prototype.setExtent = function (extent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13907 if (this._extent != extent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13908 if (extent < 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13909 this._extent = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13910 else if (this._value + extent > this._maximum)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13911 this._extent = this._maximum - this._value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13912 else
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13913 this._extent = extent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13914 if (!this._isChanging && typeof this.onchange == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13915 this.onchange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13916 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13917 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13918
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13919 Range.prototype.getExtent = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13920 return this._extent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13921 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13923 Range.prototype.setMinimum = function (minimum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13924 if (this._minimum != minimum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13925 var oldIsChanging = this._isChanging;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13926 this._isChanging = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13928 this._minimum = minimum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13929
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13930 if (minimum > this._value)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13931 this.setValue(minimum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13932 if (minimum > this._maximum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13933 this._extent = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13934 this.setMaximum(minimum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13935 this.setValue(minimum)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13936 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13937 if (minimum + this._extent > this._maximum)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13938 this._extent = this._maximum - this._minimum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13939
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13940 this._isChanging = oldIsChanging;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13941 if (!this._isChanging && typeof this.onchange == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13942 this.onchange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13943 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13944 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13946 Range.prototype.getMinimum = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13947 return this._minimum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13948 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13949
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13950 Range.prototype.setMaximum = function (maximum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13951 if (this._maximum != maximum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13952 var oldIsChanging = this._isChanging;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13953 this._isChanging = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13954
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13955 this._maximum = maximum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13956
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13957 if (maximum < this._value)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13958 this.setValue(maximum - this._extent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13959 if (maximum < this._minimum) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13960 this._extent = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13961 this.setMinimum(maximum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13962 this.setValue(this._maximum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13963 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13964 if (maximum < this._minimum + this._extent)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13965 this._extent = this._maximum - this._minimum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13966 if (maximum < this._value + this._extent)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13967 this._extent = this._maximum - this._value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13968
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13969 this._isChanging = oldIsChanging;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13970 if (!this._isChanging && typeof this.onchange == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13971 this.onchange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13972 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13973 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13974
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13975 Range.prototype.getMaximum = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13976 return this._maximum;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13977 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13978 /*----------------------------------------------------------------------------\
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13979 | Slider 1.02 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13980 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13981 | Created by Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13982 | (http://webfx.eae.net/contact.html#erik) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13983 | For WebFX (http://webfx.eae.net/) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13984 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13985 | A slider control that degrades to an input control for non supported |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13986 | browsers. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13987 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13988 | Copyright (c) 2002, 2003, 2006 Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13989 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13990 | Licensed under the Apache License, Version 2.0 (the "License"); you may not |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13991 | use this file except in compliance with the License. You may obtain a copy |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13992 | of the License at http://www.apache.org/licenses/LICENSE-2.0 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13993 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13994 | Unless required by applicable law or agreed to in writing, software |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13995 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13996 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13997 | License for the specific language governing permissions and limitations |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13998 | under the License. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
13999 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14000 | Dependencies: timer.js - an OO abstraction of timers |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14001 | range.js - provides the data model for the slider |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14002 | winclassic.css or any other css file describing the look |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14003 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14004 | 2002-10-14 | Original version released |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14005 | 2003-03-27 | Added a test in the constructor for missing oElement arg |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14006 | 2003-11-27 | Only use mousewheel when focused |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14007 | 2006-05-28 | Changed license to Apache Software License 2.0. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14008 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14009 | Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14010 \----------------------------------------------------------------------------*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14011
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14012 Slider.isSupported = typeof document.createElement != "undefined" &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14013 typeof document.documentElement != "undefined" &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14014 typeof document.documentElement.offsetWidth == "number";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14015
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14016
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14017 function Slider(oElement, oInput, sOrientation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14018 if (!oElement) return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14019 this._orientation = sOrientation || "horizontal";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14020 this._range = new Range();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14021 this._range.setExtent(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14022 this._blockIncrement = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14023 this._unitIncrement = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14024 this._timer = new Timer(100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14025
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14026
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14027 if (Slider.isSupported && oElement) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14028
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14029 this.document = oElement.ownerDocument || oElement.document;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14030
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14031 this.element = oElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14032 this.element.slider = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14033 this.element.unselectable = "on";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14034
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14035 // add class name tag to class name
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14036 this.element.className = this._orientation + " " + this.classNameTag + " " + this.element.className;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14037
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14038 // create line
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14039 this.line = this.document.createElement("DIV");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14040 this.line.className = "line";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14041 this.line.unselectable = "on";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14042 this.line.appendChild(this.document.createElement("DIV"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14043 this.element.appendChild(this.line);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14044
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14045 // create handle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14046 this.handle = this.document.createElement("DIV");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14047 this.handle.className = "handle";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14048 this.handle.unselectable = "on";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14049 this.handle.appendChild(this.document.createElement("DIV"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14050 this.handle.firstChild.appendChild(
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14051 this.document.createTextNode(String.fromCharCode(160)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14052 this.element.appendChild(this.handle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14053 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14054
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14055 this.input = oInput;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14056
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14057 // events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14058 var oThis = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14059 this._range.onchange = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14060 oThis.recalculate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14061 if (typeof oThis.onchange == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14062 oThis.onchange();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14063 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14064
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14065 if (Slider.isSupported && oElement) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14066 this.element.onfocus = Slider.eventHandlers.onfocus;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14067 this.element.onblur = Slider.eventHandlers.onblur;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14068 this.element.onmousedown = Slider.eventHandlers.onmousedown;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14069 this.element.onmouseover = Slider.eventHandlers.onmouseover;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14070 this.element.onmouseout = Slider.eventHandlers.onmouseout;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14071 this.element.onkeydown = Slider.eventHandlers.onkeydown;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14072 this.element.onkeypress = Slider.eventHandlers.onkeypress;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14073 this.element.onmousewheel = Slider.eventHandlers.onmousewheel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14074 this.handle.onselectstart =
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14075 this.element.onselectstart = function () { return false; };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14076
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14077 this._timer.ontimer = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14078 oThis.ontimer();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14079 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14080
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14081 // extra recalculate for ie
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14082 window.setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14083 oThis.recalculate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14084 }, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14085 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14086 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14087 this.input.onchange = function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14088 oThis.setValue(oThis.input.value);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14089 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14090 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14091 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14092
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14093 Slider.eventHandlers = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14094
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14095 // helpers to make events a bit easier
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14096 getEvent: function (e, el) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14097 if (!e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14098 if (el)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14099 e = el.document.parentWindow.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14100 else
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14101 e = window.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14102 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14103 if (!e.srcElement) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14104 var el = e.target;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14105 while (el != null && el.nodeType != 1)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14106 el = el.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14107 e.srcElement = el;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14108 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14109 if (typeof e.offsetX == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14110 e.offsetX = e.layerX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14111 e.offsetY = e.layerY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14112 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14113
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14114 return e;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14115 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14116
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14117 getDocument: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14118 if (e.target)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14119 return e.target.ownerDocument;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14120 return e.srcElement.document;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14121 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14122
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14123 getSlider: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14124 var el = e.target || e.srcElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14125 while (el != null && el.slider == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14126 el = el.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14127 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14128 if (el)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14129 return el.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14130 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14131 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14133 getLine: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14134 var el = e.target || e.srcElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14135 while (el != null && el.className != "line") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14136 el = el.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14137 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14138 return el;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14139 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14141 getHandle: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14142 var el = e.target || e.srcElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14143 var re = /handle/;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14144 while (el != null && !re.test(el.className)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14145 el = el.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14146 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14147 return el;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14148 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14149 // end helpers
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14150
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14151 onfocus: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14152 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14153 s._focused = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14154 s.handle.className = "handle hover";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14155 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14156
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14157 onblur: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14158 var s = this.slider
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14159 s._focused = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14160 s.handle.className = "handle";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14161 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14162
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14163 onmouseover: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14164 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14165 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14166 if (e.srcElement == s.handle)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14167 s.handle.className = "handle hover";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14168 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14169
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14170 onmouseout: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14171 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14172 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14173 if (e.srcElement == s.handle && !s._focused)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14174 s.handle.className = "handle";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14175 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14176
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14177 onmousedown: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14178 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14179 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14180 if (s.element.focus)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14181 s.element.focus();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14182
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14183 Slider._currentInstance = s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14184 var doc = s.document;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14185
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14186 if (doc.addEventListener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14187 doc.addEventListener("mousemove", Slider.eventHandlers.onmousemove, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14188 doc.addEventListener("mouseup", Slider.eventHandlers.onmouseup, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14189 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14190 else if (doc.attachEvent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14191 doc.attachEvent("onmousemove", Slider.eventHandlers.onmousemove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14192 doc.attachEvent("onmouseup", Slider.eventHandlers.onmouseup);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14193 doc.attachEvent("onlosecapture", Slider.eventHandlers.onmouseup);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14194 s.element.setCapture();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14195 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14196
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14197 if (Slider.eventHandlers.getHandle(e)) { // start drag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14198 Slider._sliderDragData = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14199 screenX: e.screenX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14200 screenY: e.screenY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14201 dx: e.screenX - s.handle.offsetLeft,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14202 dy: e.screenY - s.handle.offsetTop,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14203 startValue: s.getValue(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14204 slider: s
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14205 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14206 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14207 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14208 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14209 var lineEl = Slider.eventHandlers.getLine(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14210 s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14211 s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14212 s._increasing = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14213 s.ontimer();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14214 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14215 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14216
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14217 onmousemove: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14218 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14219
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14220 if (Slider._sliderDragData) { // drag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14221 var s = Slider._sliderDragData.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14222
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14223 var boundSize = s.getMaximum() - s.getMinimum();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14224 var size, pos, reset;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14225
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14226 if (s._orientation == "horizontal") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14227 size = s.element.offsetWidth - s.handle.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14228 pos = e.screenX - Slider._sliderDragData.dx;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14229 reset = Math.abs(e.screenY - Slider._sliderDragData.screenY) > 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14230 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14231 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14232 size = s.element.offsetHeight - s.handle.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14233 pos = s.element.offsetHeight - s.handle.offsetHeight -
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14234 (e.screenY - Slider._sliderDragData.dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14235 reset = Math.abs(e.screenX - Slider._sliderDragData.screenX) > 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14236 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14237 s.setValue(reset ? Slider._sliderDragData.startValue :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14238 s.getMinimum() + boundSize * pos / size);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14239 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14240 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14241 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14242 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14243 var s = Slider._currentInstance;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14244 if (s != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14245 var lineEl = Slider.eventHandlers.getLine(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14246 s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14247 s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14248 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14249 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14250
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14251 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14252
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14253 onmouseup: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14254 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14255 var s = Slider._currentInstance;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14256 var doc = s.document;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14257 if (doc.removeEventListener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14258 doc.removeEventListener("mousemove", Slider.eventHandlers.onmousemove, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14259 doc.removeEventListener("mouseup", Slider.eventHandlers.onmouseup, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14261 else if (doc.detachEvent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14262 doc.detachEvent("onmousemove", Slider.eventHandlers.onmousemove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14263 doc.detachEvent("onmouseup", Slider.eventHandlers.onmouseup);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14264 doc.detachEvent("onlosecapture", Slider.eventHandlers.onmouseup);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14265 s.element.releaseCapture();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14267
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14268 if (Slider._sliderDragData) { // end drag
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14269 Slider._sliderDragData = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14270 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14271 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14272 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14273 s._timer.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14274 s._increasing = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14275 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14276 Slider._currentInstance = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14277 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14278
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14279 onkeydown: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14280 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14281 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14282 //var s = Slider.eventHandlers.getSlider(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14283 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14284 var kc = e.keyCode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14285 switch (kc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14286 case 33: // page up
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14287 s.setValue(s.getValue() + s.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14288 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14289 case 34: // page down
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14290 s.setValue(s.getValue() - s.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14291 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14292 case 35: // end
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14293 s.setValue(s.getOrientation() == "horizontal" ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14294 s.getMaximum() :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14295 s.getMinimum());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14296 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14297 case 36: // home
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14298 s.setValue(s.getOrientation() == "horizontal" ?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14299 s.getMinimum() :
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14300 s.getMaximum());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14301 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14302 case 38: // up
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14303 case 39: // right
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14304 s.setValue(s.getValue() + s.getUnitIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14305 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14306
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14307 case 37: // left
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14308 case 40: // down
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14309 s.setValue(s.getValue() - s.getUnitIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14310 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14312
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14313 if (kc >= 33 && kc <= 40) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14314 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14315 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14316 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14317
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14318 onkeypress: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14319 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14320 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14321 var kc = e.keyCode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14322 if (kc >= 33 && kc <= 40) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14323 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14324 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14325 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14326
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14327 onmousewheel: function (e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14328 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14329 e = Slider.eventHandlers.getEvent(e, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14330 var s = this.slider;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14331 if (s._focused) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14332 s.setValue(s.getValue() + e.wheelDelta / 120 * s.getUnitIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14333 // windows inverts this on horizontal sliders. That does not
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14334 // make sense to me
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14335 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14336 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14337 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14338 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14339
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14340
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14341
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14342 Slider.prototype.classNameTag = "dynamic-slider-control",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14343
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14344 Slider.prototype.setValue = function (v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14345 this._range.setValue(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14346 this.input.value = this.getValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14347 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14348
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14349 Slider.prototype.getValue = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14350 return this._range.getValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14351 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14352
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14353 Slider.prototype.setMinimum = function (v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14354 this._range.setMinimum(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14355 this.input.value = this.getValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14356 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14357
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14358 Slider.prototype.getMinimum = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14359 return this._range.getMinimum();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14360 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14361
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14362 Slider.prototype.setMaximum = function (v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14363 this._range.setMaximum(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14364 this.input.value = this.getValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14365 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14366
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14367 Slider.prototype.getMaximum = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14368 return this._range.getMaximum();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14369 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14370
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14371 Slider.prototype.setUnitIncrement = function (v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14372 this._unitIncrement = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14373 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14374
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14375 Slider.prototype.getUnitIncrement = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14376 return this._unitIncrement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14377 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14379 Slider.prototype.setBlockIncrement = function (v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14380 this._blockIncrement = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14381 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14382
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14383 Slider.prototype.getBlockIncrement = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14384 return this._blockIncrement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14385 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14386
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14387 Slider.prototype.getOrientation = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14388 return this._orientation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14389 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14390
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14391 Slider.prototype.setOrientation = function (sOrientation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14392 if (sOrientation != this._orientation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14393 if (Slider.isSupported && this.element) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14394 // add class name tag to class name
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14395 this.element.className = this.element.className.replace(this._orientation,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14396 sOrientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14397 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14398 this._orientation = sOrientation;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14399 this.recalculate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14400
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14401 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14402 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14403
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14404 Slider.prototype.recalculate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14405 if (!Slider.isSupported || !this.element) return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14406
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14407 var w = this.element.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14408 var h = this.element.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14409 var hw = this.handle.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14410 var hh = this.handle.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14411 var lw = this.line.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14412 var lh = this.line.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14413
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14414 // this assumes a border-box layout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14415
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14416 if (this._orientation == "horizontal") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14417 this.handle.style.left = (w - hw) * (this.getValue() - this.getMinimum()) /
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14418 (this.getMaximum() - this.getMinimum()) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14419 this.handle.style.top = (h - hh) / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14420
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14421 this.line.style.top = (h - lh) / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14422 this.line.style.left = hw / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14423 //this.line.style.right = hw / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14424 this.line.style.width = Math.max(0, w - hw - 2)+ "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14425 this.line.firstChild.style.width = Math.max(0, w - hw - 4)+ "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14426 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14427 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14428 this.handle.style.left = (w - hw) / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14429 this.handle.style.top = h - hh - (h - hh) * (this.getValue() - this.getMinimum()) /
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14430 (this.getMaximum() - this.getMinimum()) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14431
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14432 this.line.style.left = (w - lw) / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14433 this.line.style.top = hh / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14434 this.line.style.height = Math.max(0, h - hh - 2) + "px"; //hard coded border width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14435 //this.line.style.bottom = hh / 2 + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14436 this.line.firstChild.style.height = Math.max(0, h - hh - 4) + "px"; //hard coded border width
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14437 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14438 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14439
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14440 Slider.prototype.ontimer = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14441 var hw = this.handle.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14442 var hh = this.handle.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14443 var hl = this.handle.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14444 var ht = this.handle.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14445
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14446 if (this._orientation == "horizontal") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14447 if (this._mouseX > hl + hw &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14448 (this._increasing == null || this._increasing)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14449 this.setValue(this.getValue() + this.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14450 this._increasing = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14451 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14452 else if (this._mouseX < hl &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14453 (this._increasing == null || !this._increasing)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14454 this.setValue(this.getValue() - this.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14455 this._increasing = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14456 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14458 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14459 if (this._mouseY > ht + hh &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14460 (this._increasing == null || !this._increasing)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14461 this.setValue(this.getValue() - this.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14462 this._increasing = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14463 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14464 else if (this._mouseY < ht &&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14465 (this._increasing == null || this._increasing)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14466 this.setValue(this.getValue() + this.getBlockIncrement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14467 this._increasing = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14468 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14469 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14470
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14471 this._timer.start();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14472 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14473 /*----------------------------------------------------------------------------\
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14474 | Timer Class |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14475 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14476 | Created by Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14477 | (http://webfx.eae.net/contact.html#erik) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14478 | For WebFX (http://webfx.eae.net/) |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14479 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14480 | Object Oriented Encapsulation of setTimeout fires ontimer when the timer |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14481 | is triggered. Does not work in IE 5.00 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14482 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14483 | Copyright (c) 2002, 2006 Erik Arvidsson |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14484 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14485 | Licensed under the Apache License, Version 2.0 (the "License"); you may not |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14486 | use this file except in compliance with the License. You may obtain a copy |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14487 | of the License at http://www.apache.org/licenses/LICENSE-2.0 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14488 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14489 | Unless required by applicable law or agreed to in writing, software |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14490 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14491 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14492 | License for the specific language governing permissions and limitations |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14493 | under the License. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14494 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14495 | 2002-10-14 | Original version released |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14496 | 2006-05-28 | Changed license to Apache Software License 2.0. |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14497 |-----------------------------------------------------------------------------|
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14498 | Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14499 \----------------------------------------------------------------------------*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14500
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14501 function Timer(nPauseTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14502 this._pauseTime = typeof nPauseTime == "undefined" ? 1000 : nPauseTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14503 this._timer = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14504 this._isStarted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14505 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14507 Timer.prototype.start = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14508 if (this.isStarted())
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14509 this.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14510 var oThis = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14511 this._timer = window.setTimeout(function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14512 if (typeof oThis.ontimer == "function")
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14513 oThis.ontimer();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14514 }, this._pauseTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14515 this._isStarted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14516 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14517
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14518 Timer.prototype.stop = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14519 if (this._timer != null)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14520 window.clearTimeout(this._timer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14521 this._isStarted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14522 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14523
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14524 Timer.prototype.isStarted = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14525 return this._isStarted;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14526 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14527
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14528 Timer.prototype.getPauseTime = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14529 return this._pauseTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14530 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14531
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14532 Timer.prototype.setPauseTime = function (nPauseTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14533 this._pauseTime = nPauseTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14534 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14535 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14536 * SimileTimeplotModify.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14537 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14538 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14539 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14540 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14541 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14542 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14543 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14544 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14545 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14546 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14547 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14548 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14549 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14550 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14551 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14552 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14553 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14554 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14555
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14556 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14557 * Modified (overwritten) Simile Timeplot Functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14558 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14559 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14560 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14561 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14562 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14563 SimileAjax.DateTime.MILLISECOND = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14564 SimileAjax.DateTime.SECOND = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14565 SimileAjax.DateTime.MINUTE = 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14566 SimileAjax.DateTime.HOUR = 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14567 SimileAjax.DateTime.DAY = 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14568 SimileAjax.DateTime.WEEK = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14569 SimileAjax.DateTime.MONTH = 6;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14570 SimileAjax.DateTime.QUARTER = 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14571 SimileAjax.DateTime.SEMESTER = 8;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14572 SimileAjax.DateTime.YEAR = 9;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14573 SimileAjax.DateTime.LUSTRUM = 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14574 SimileAjax.DateTime.DECADE = 11;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14575 SimileAjax.DateTime.HALFCENTURY = 12;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14576 SimileAjax.DateTime.CENTURY = 13;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14577 SimileAjax.DateTime.HALFMILLENNIUM = 14;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14578 SimileAjax.DateTime.MILLENNIUM = 15;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14579
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14580 SimileAjax.DateTime.Strings = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14581 "en" : ["milliseconds", "seconds", "minutes", "hours", "days", "weeks", "months", "quarters", "semester", "years", "5 years", "decades", "50 years", "centuries", "500 years", "millenniums"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14582 "de" : ["Millisekunden", "Sekunden", "Minuten", "Stunden", "Tage", "Wochen", "Monate", "Quartale", "Semester", "Jahre", "5 Jahre", "Dekaden", "50 Jahre", "Jahrhunderte", "500 Jahre", "Jahrtausende"]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14583 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14584
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14585 SimileAjax.DateTime.gregorianUnitLengths = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14586 (function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14587 var d = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14588 var a = d.gregorianUnitLengths;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14590 a[d.MILLISECOND] = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14591 a[d.SECOND] = 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14592 a[d.MINUTE] = a[d.SECOND] * 60;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14593 a[d.HOUR] = a[d.MINUTE] * 60;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14594 a[d.DAY] = a[d.HOUR] * 24;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14595 a[d.WEEK] = a[d.DAY] * 7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14596 a[d.MONTH] = a[d.DAY] * 31;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14597 a[d.QUARTER] = a[d.DAY] * 91;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14598 a[d.SEMESTER] = a[d.DAY] * 182;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14599 a[d.YEAR] = a[d.DAY] * 365;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14600 a[d.LUSTRUM] = a[d.YEAR] * 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14601 a[d.DECADE] = a[d.YEAR] * 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14602 a[d.HALFCENTURY] = a[d.YEAR] * 50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14603 a[d.CENTURY] = a[d.YEAR] * 100;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14604 a[d.HALFMILLENNIUM] = a[d.YEAR] * 500;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14605 a[d.MILLENNIUM] = a[d.YEAR] * 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14606 })();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14608 SimileAjax.DateTime.roundDownToInterval = function(date, intervalUnit, timeZone, multiple, firstDayOfWeek) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14609 timeZone = ( typeof timeZone == 'undefined') ? 0 : timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14610 var timeShift = timeZone * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14611
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14612 var date2 = new Date(date.getTime() + timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14613 var clearInDay = function(d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14614 d.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14615 d.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14616 d.setUTCMinutes(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14617 d.setUTCHours(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14618 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14619 var clearInWeek = function(d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14620 clearInDay(d);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14621 var day = d.getDay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14622 var millies = d.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14623 millies -= day * 1000 * 60 * 60 * 24;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14624 d.setTime(millies);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14625 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14626 var clearInYear = function(d) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14627 clearInDay(d);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14628 d.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14629 d.setUTCMonth(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14630 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14631
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14632 switch (intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14633 case SimileAjax.DateTime.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14634 var x = date2.getUTCMilliseconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14635 date2.setUTCMilliseconds(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14636 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14637 case SimileAjax.DateTime.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14638 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14639 var x = date2.getUTCSeconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14640 date2.setUTCSeconds(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14641 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14642 case SimileAjax.DateTime.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14643 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14644 date2.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14645 var x = date2.getUTCMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14646 date2.setTime(date2.getTime() - (x % multiple) * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14647 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14648 case SimileAjax.DateTime.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14649 date2.setUTCMilliseconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14650 date2.setUTCSeconds(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14651 date2.setUTCMinutes(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14652 var x = date2.getUTCHours();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14653 date2.setUTCHours(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14654 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14655 case SimileAjax.DateTime.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14656 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14657 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14658 case SimileAjax.DateTime.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14659 clearInWeek(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14660 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14661 case SimileAjax.DateTime.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14662 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14663 date2.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14664 var x = date2.getUTCMonth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14665 date2.setUTCMonth(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14666 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14667 case SimileAjax.DateTime.QUARTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14668 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14669 date2.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14670 var x = date2.getUTCMonth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14671 date2.setUTCMonth(x - (x % 3));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14672 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14673 case SimileAjax.DateTime.SEMESTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14674 clearInDay(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14675 date2.setUTCDate(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14676 var x = date2.getUTCMonth();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14677 date2.setUTCMonth(x - (x % 6));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14678 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14679 case SimileAjax.DateTime.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14680 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14681 var x = date2.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14682 date2.setUTCFullYear(x - (x % multiple));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14683 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14684 case SimileAjax.DateTime.LUSTRUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14685 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14686 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 5) * 5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14687 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14688 case SimileAjax.DateTime.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14689 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14690 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 10) * 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14691 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14692 case SimileAjax.DateTime.HALFCENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14693 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14694 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 50) * 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14695 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14696 case SimileAjax.DateTime.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14697 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14698 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 100) * 100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14699 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14700 case SimileAjax.DateTime.HALFMILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14701 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14702 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 500) * 500);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14703 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14704 case SimileAjax.DateTime.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14705 clearInYear(date2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14706 date2.setUTCFullYear(Math.floor(date2.getUTCFullYear() / 1000) * 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14707 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14708 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14709
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14710 date.setTime(date2.getTime() - timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14711 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14712
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14713 SimileAjax.DateTime.incrementByInterval = function(date, intervalUnit, timeZone) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14714 timeZone = ( typeof timeZone == 'undefined') ? 0 : timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14715
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14716 var timeShift = timeZone * SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14717
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14718 var date2 = new Date(date.getTime() + timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14719
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14720 switch (intervalUnit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14721 case SimileAjax.DateTime.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14722 date2.setTime(date2.getTime() + 1)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14723 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14724 case SimileAjax.DateTime.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14725 date2.setTime(date2.getTime() + 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14726 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14727 case SimileAjax.DateTime.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14728 date2.setTime(date2.getTime() + SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.MINUTE]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14729 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14730 case SimileAjax.DateTime.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14731 date2.setTime(date2.getTime() + SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.HOUR]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14732 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14733 case SimileAjax.DateTime.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14734 date2.setUTCDate(date2.getUTCDate() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14735 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14736 case SimileAjax.DateTime.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14737 date2.setUTCDate(date2.getUTCDate() + 7);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14738 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14739 case SimileAjax.DateTime.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14740 date2.setUTCMonth(date2.getUTCMonth() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14741 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14742 case SimileAjax.DateTime.QUARTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14743 date2.setUTCMonth(date2.getUTCMonth() + 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14744 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14745 case SimileAjax.DateTime.SEMESTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14746 date2.setUTCMonth(date2.getUTCMonth() + 6);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14747 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14748 case SimileAjax.DateTime.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14749 date2.setUTCFullYear(date2.getUTCFullYear() + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14750 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14751 case SimileAjax.DateTime.LUSTRUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14752 date2.setUTCFullYear(date2.getUTCFullYear() + 5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14753 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14754 case SimileAjax.DateTime.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14755 date2.setUTCFullYear(date2.getUTCFullYear() + 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14756 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14757 case SimileAjax.DateTime.HALFCENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14758 date2.setUTCFullYear(date2.getUTCFullYear() + 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14759 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14760 case SimileAjax.DateTime.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14761 date2.setUTCFullYear(date2.getUTCFullYear() + 100);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14762 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14763 case SimileAjax.DateTime.HALFMILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14764 date2.setUTCFullYear(date2.getUTCFullYear() + 500);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14765 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14766 case SimileAjax.DateTime.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14767 date2.setUTCFullYear(date2.getUTCFullYear() + 1000);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14768 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14769 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14770 date.setTime(date2.getTime() - timeShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14771 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14772
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14773 SimileAjax.DateTime.getTimeLabel = function(unit, t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14774 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14775 var second = t.getUTCSeconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14776 var minute = t.getUTCMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14777 var hour = t.getUTCHours();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14778 var day = t.getUTCDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14779 var month = t.getUTCMonth() + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14780 var year = t.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14781 switch(unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14782 case time.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14783 return hour + ":" + ((minute < 10) ? "0" : "") + minute + ":" + ((second < 10) ? "0" : "") + second;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14784 case time.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14785 return hour + ":" + ((minute < 10) ? "0" : "") + minute;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14786 case time.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14787 return hour + ":00";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14788 case time.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14789 case time.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14790 case time.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14791 case time.QUARTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14792 case time.SEMESTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14793 return year + "-" + ((month < 10) ? "0" : "") + month + "-" + ((day < 10) ? "0" : "") + day;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14794 case time.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14795 case time.LUSTRUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14796 case time.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14797 case time.HALFCENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14798 case time.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14799 case time.HALFMILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14800 case time.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14801 return year;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14802 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14803 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14804
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14805 SimileAjax.DateTime.getTimeString = function(unit, t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14806 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14807 switch(unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14808 case time.MILLISECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14809 case time.SECOND:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14810 case time.MINUTE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14811 case time.HOUR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14812 var m = t.getUTCMonth() + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14813 var d = t.getUTCDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14814 var h = t.getUTCHours();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14815 var min = t.getUTCMinutes();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14816 var s = t.getUTCSeconds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14817 return t.getUTCFullYear() + "-" + ((m < 10) ? "0" : "") + m + "-" + ((d < 10) ? "0" : "") + d + " " + ((h < 10) ? "0" : "") + h + ":" + ((min < 10) ? "0" : "") + min + ":" + ((s < 10) ? "0" : "") + s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14818 case time.DAY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14819 case time.WEEK:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14820 case time.MONTH:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14821 case time.QUARTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14822 case time.SEMESTER:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14823 var m = t.getUTCMonth() + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14824 var d = t.getUTCDate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14825 return t.getUTCFullYear() + "-" + ((m < 10) ? "0" : "") + m + "-" + ((d < 10) ? "0" : "") + d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14826 case time.YEAR:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14827 case time.LUSTRUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14828 case time.DECADE:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14829 case time.HALFCENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14830 case time.CENTURY:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14831 case time.HALFMILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14832 case time.MILLENNIUM:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14833 return t.getUTCFullYear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14834 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14835 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14836
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14837 Timeplot.DefaultEventSource.prototype.loadData = function(events) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14838
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14839 this._events.maxValues = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14840 this._events.removeAll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14841 for (var i = 0; i < events.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14842 var event = events[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14843 var numericEvent = new Timeplot.DefaultEventSource.NumericEvent(event.date, event.value);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14844 this._events.add(numericEvent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14846 this._fire("onAddMany", []);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14847
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14848 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14849
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14850 Timeplot._Impl.prototype.resetPlots = function(plotInfos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14851
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14852 this._plotInfos = plotInfos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14853 this._painters = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14854 background : [],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14855 foreground : []
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14856 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14857 this._painter = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14858
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14859 var timeplot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14860 var painter = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14861 onAddMany : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14862 timeplot.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14863 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14864 onClear : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14865 timeplot.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14866 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14867 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14868
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14869 for ( i = this._plots.length; i > 0; i--) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14870 this._plots[i - 1].opacityPlot.removeChild(this._plots[i - 1]._opacityCanvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14871 this._plots[i - 1].dispose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14872 if (document.addEventListener) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14873 this._containerDiv.removeEventListener("mousemove", this._plots[i - 1].mousemove, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14874 this._containerDiv.removeEventListener("mouseover", this._plots[i - 1].mouseover, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14875 } else if (document.attachEvent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14876 this._containerDiv.detachEvent("onmousemove", this._plots[i - 1].mousemove);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14877 this._containerDiv.detachEvent("onmouseover", this._plots[i - 1].mouseover);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14878 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14879 delete this._plots[i - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14880 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14881
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14882 this._plots = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14883
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14884 for ( i = 0; i < this._plotInfos.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14885 var plot = new Timeplot.Plot(this, this._plotInfos[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14886 var dataSource = plot.getDataSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14887 if (dataSource) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14888 dataSource.addListener(painter);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14889 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14890 this.addPainter("background", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14891 context : plot.getTimeGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14892 action : plot.getTimeGeometry().paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14893 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14894 this.addPainter("background", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14895 context : plot.getValueGeometry(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14896 action : plot.getValueGeometry().paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14897 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14898 this.addPainter("foreground", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14899 context : plot,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14900 action : plot.paint
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14901 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14902 this._plots.push(plot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14903 plot.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14904 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14906 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14907
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14908 Timeplot.DefaultTimeGeometry.prototype._calculateGrid = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14909 var grid = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14910
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14911 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14912 var u = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14913 var p = this._period;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14915 if (p == 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14916 return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14917
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14918 var periodUnit = -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14919 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14920 periodUnit++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14921 } while (time.gregorianUnitLengths[periodUnit] < p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14922
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14923 periodUnit--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14924
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14925 var unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14926 if (periodUnit < time.DAY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14927 unit = time.HOUR;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14928 } else if (periodUnit < time.WEEK) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14929 unit = time.DAY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14930 } else if (periodUnit < time.QUARTER) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14931 unit = time.WEEK;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14932 } else if (periodUnit < time.YEAR) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14933 unit = time.MONTH;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14934 } else if (periodUnit < time.DECADE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14935 unit = time.YEAR;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14936 } else if (periodUnit < time.CENTURY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14937 unit = time.DECADE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14938 } else if (periodUnit < time.HALFMILLENNIUM) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14939 unit = time.CENTURY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14940 } else if (periodUnit < time.MILLENNIUM) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14941 unit = time.HALFMILLENNIUM;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14942 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14943 unit = time.MILLENNIUM;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14944 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14946 if (unit < this._granularity) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14947 unit = this._granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14948 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14949
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14950 var t = u.cloneValue(this._earliestDate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14951 var timeZone;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14952 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14953 time.roundDownToInterval(t, unit, timeZone, 1, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14954 var x = this.toScreen(u.toNumber(t));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14955 var l = SimileAjax.DateTime.getTimeLabel(unit, t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14956 if (x > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14957 grid.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14958 x : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14959 label : l
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14960 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14961 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14962 time.incrementByInterval(t, unit, timeZone);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14963 } while (t.getTime() < this._latestDate.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14964
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14965 return grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14966
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14967 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14968
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14969 //modified function to prevent from drawing left and right axis
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14970 Timeplot.DefaultValueGeometry.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14971 if (this._timeplot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14972 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14973
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14974 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14975
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14976 // paint grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14977 if (this._gridColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14978 var gridGradient = ctx.createLinearGradient(0, 0, 0, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14979 gridGradient.addColorStop(0, this._gridColor.toHexString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14980 gridGradient.addColorStop(0.3, this._gridColor.toHexString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14981 gridGradient.addColorStop(1, "rgba(255,255,255,0.5)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14982
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14983 ctx.lineWidth = this._gridLineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14984 ctx.strokeStyle = gridGradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14985
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14986 for (var i = 0; i < this._grid.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14987 var tick = this._grid[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14988 var y = Math.floor(tick.y) + 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14989 if ( typeof tick.label != "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14990 if (this._axisLabelsPlacement == "left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14991 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14992 left : 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14993 bottom : y + 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14994 color : this._gridColor.toHexString(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14995 visibility : "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14996 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14997 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14998 } else if (this._axisLabelsPlacement == "right") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
14999 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15000 right : 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15001 bottom : y + 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15002 color : this._gridColor.toHexString(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15003 visibility : "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15004 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15005 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15006 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15007 if (y + div.clientHeight < this._canvas.height + 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15008 div.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15009 // avoid the labels that would overflow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15010 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15011 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15012
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15013 // draw grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15014 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15015 if (this._gridType == "long" || tick.label == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15016 ctx.moveTo(0, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15017 ctx.lineTo(this._canvas.width, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15018 } else if (this._gridType == "short") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15019 if (this._axisLabelsPlacement == "left") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15020 ctx.moveTo(0, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15021 ctx.lineTo(this._gridShortSize, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15022 } else if (this._axisLabelsPlacement == "right") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15023 ctx.moveTo(this._canvas.width, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15024 ctx.lineTo(this._canvas.width - this._gridShortSize, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15025 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15026 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15027 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15028 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15029 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15030 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15031 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15032
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15033 //modified function to prevent from drawing hidden labels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15034 Timeplot.DefaultTimeGeometry.prototype.paint = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15035 if (this._canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15036 var unit = this._unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15037 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15038
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15039 var gradient = ctx.createLinearGradient(0, 0, 0, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15040
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15041 ctx.strokeStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15042 ctx.lineWidth = this._gridLineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15043 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15044
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15045 // paint grid
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15046 if (this._gridColor) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15047 gradient.addColorStop(0, this._gridColor.toString());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15048 gradient.addColorStop(1, "rgba(255,255,255,0.9)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15049 for (var i = 0; i < this._grid.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15050 var tick = this._grid[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15051 var x = Math.floor(tick.x) + 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15052 if (this._axisLabelsPlacement == "top") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15053 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15054 left : x + 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15055 top : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15056 visibility : "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15057 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15058 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15059 } else if (this._axisLabelsPlacement == "bottom") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15060 var div = this._timeplot.putText(this._id + "-" + i, tick.label, "timeplot-grid-label", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15061 left : x + 4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15062 bottom : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15063 visibility : "hidden"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15064 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15065 this._labels.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15066 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15067 if (!this._hideLabels && x + div.clientWidth < this._canvas.width + 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15068 div.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15069 // avoid the labels that would overflow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15070 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15071
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15072 // draw separator
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15073 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15074 ctx.moveTo(x, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15075 ctx.lineTo(x, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15076 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15077 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15078 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15079 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15080 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15081
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15082 Timeplot.Plot.prototype.getSliceNumber = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15083 return this._dataSource.getData().times.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15084 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15085
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15086 Timeplot.Plot.prototype.getSliceId = function(time) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15087 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15088 for (var k = 0; k < data.times.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15089 if (data.times[k].getTime() == time.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15090 return k;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15091 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15092 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15093 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15094 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15096 Timeplot.Plot.prototype.getSliceTime = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15097 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15098 if (0 <= index && index < data.times.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15099 return data.times[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15100 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15101 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15102 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15103
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15104 Timeplot.Plot.prototype.initialize = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15105 if (this._dataSource && this._dataSource.getValue) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15106 this._timeFlag = this._timeplot.putDiv("timeflag", "timeplot-timeflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15107 this._valueFlag = this._timeplot.putDiv(this._id + "valueflag", "timeplot-valueflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15108 this._pinValueFlag = this._timeplot.putDiv(this._id + "pinvalueflag", "timeplot-valueflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15109 var pin = document.getElementById(this._timeplot._id + "-" + this._id + "pinvalueflag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15110 if (SimileAjax.Platform.browser.isIE && SimileAjax.Platform.browser.majorVersion < 9) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15111 var cssText = "border: 1px solid " + this._plotInfo.lineColor.toString() + "; background-color: " + this._plotInfo.fillColor.toString() + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15112 cssText = cssText.replace(/rgba\((\s*\d{1,3}),(\s*\d{1,3}),(\s*\d{1,3}),(\s*\d{1}|\s*\d{1}\.\d+)\)/g, 'rgb($1,$2,$3)');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15113 pin.style.setAttribute("cssText", cssText);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15114 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15115 pin.style.border = "1px solid " + this._plotInfo.lineColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15116 pin.style.backgroundColor = this._plotInfo.fillColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15117 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15118 this._valueFlagLineLeft = this._timeplot.putDiv(this._id + "valueflagLineLeft", "timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15119 this._valueFlagLineRight = this._timeplot.putDiv(this._id + "valueflagLineRight", "timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15120 this._pinValueFlagLineLeft = this._timeplot.putDiv(this._id + "pinValueflagLineLeft", "timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15121 this._pinValueFlagLineRight = this._timeplot.putDiv(this._id + "pinValueflagLineRight", "timeplot-valueflag-line");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15122 if (!this._valueFlagLineLeft.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15123 this._valueFlagLineLeft.appendChild(SimileAjax.Graphics.createTranslucentImage(Timeplot.urlPrefix + "images/line_left.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15124 this._valueFlagLineRight.appendChild(SimileAjax.Graphics.createTranslucentImage(Timeplot.urlPrefix + "images/line_right.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15125 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15126 if (!this._pinValueFlagLineLeft.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15127 this._pinValueFlagLineLeft.appendChild(SimileAjax.Graphics.createTranslucentImage(GeoTemConfig.path + "plot-line_left.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15128 this._pinValueFlagLineRight.appendChild(SimileAjax.Graphics.createTranslucentImage(GeoTemConfig.path + "plot-line_right.png"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15129 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15130 this._valueFlagPole = this._timeplot.putDiv(this._id + "valuepole", "timeplot-valueflag-pole");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15131
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15132 var opacity = this._plotInfo.valuesOpacity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15133
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15134 SimileAjax.Graphics.setOpacity(this._timeFlag, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15135 SimileAjax.Graphics.setOpacity(this._valueFlag, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15136 SimileAjax.Graphics.setOpacity(this._pinValueFlag, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15137 SimileAjax.Graphics.setOpacity(this._valueFlagLineLeft, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15138 SimileAjax.Graphics.setOpacity(this._valueFlagLineRight, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15139 SimileAjax.Graphics.setOpacity(this._pinValueFlagLineLeft, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15140 SimileAjax.Graphics.setOpacity(this._pinValueFlagLineRight, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15141 SimileAjax.Graphics.setOpacity(this._valueFlagPole, opacity);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15142
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15143 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15144
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15145 var mouseOverHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15146 plot._timeFlag.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15147 plot._valueFlag.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15148 plot._pinValueFlag.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15149 plot._valueFlagLineLeft.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15150 plot._valueFlagLineRight.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15151 plot._pinValueFlagLineLeft.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15152 plot._pinValueFlagLineRight.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15153 plot._valueFlagPole.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15154 if (plot._plotInfo.showValues) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15155 plot._valueFlag.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15156 mouseMoveHandler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15157 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15158 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15159 var mouseOutHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15160 plot._timeFlag.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15161 plot._valueFlag.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15162 plot._pinValueFlag.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15163 plot._valueFlagLineLeft.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15164 plot._valueFlagLineRight.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15165 plot._pinValueFlagLineLeft.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15166 plot._pinValueFlagLineRight.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15167 plot._valueFlagPole.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15168 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15169 var day = 24 * 60 * 60 * 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15170 var month = 30 * day;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15171
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15172 var mouseMoveHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15173 if ( typeof SimileAjax != "undefined" && plot._plotInfo.showValues) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15174 var c = plot._canvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15175 var x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot._canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15176 if (x > c.width)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15177 x = c.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15178 if (isNaN(x) || x < 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15179 x = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15180 var t = plot._timeGeometry.fromScreen(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15181 if (t == 0) {// something is wrong
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15182 plot._valueFlag.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15183 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15184 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15185
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15186 var v, validTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15187 if (plot.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15188 var time1 = plot._dataSource.getClosestValidTime(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15189 var x1 = plot._timeGeometry.toScreen(time1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15190 var index_x1 = plot.getSliceId(time1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15191 var time2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15192 if (x < x1 && index_x1 > 0 || x >= x1 && index_x1 == plot.getSliceNumber() - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15193 time2 = plot.getSliceTime(index_x1 - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15194 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15195 time2 = plot.getSliceTime(index_x1 + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15196 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15197 var x2 = plot._timeGeometry.toScreen(time2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15198
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15199 var t1 = new Date(time1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15200 var t2 = new Date(time2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15201 var unit = plot._timeGeometry.extendedDataSource.unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15202 var l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15203 if (x1 < x2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15204 l = SimileAjax.DateTime.getTimeLabel(unit, t1) + '-' + SimileAjax.DateTime.getTimeLabel(unit, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15205 validTime = time1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15206 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15207 l = SimileAjax.DateTime.getTimeLabel(unit, t2) + '-' + SimileAjax.DateTime.getTimeLabel(unit, t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15208 validTime = time2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15209 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15210 v = plot._dataSource.getValue(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15211 if (plot._plotInfo.roundValues)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15212 v = Math.round(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15213 plot._valueFlag.innerHTML = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15214 plot._timeFlag.innerHTML = l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15215 x = (x1 + x2 ) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15216 } else if (plot.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15217 validTime = plot._dataSource.getClosestValidTime(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15218 x = plot._timeGeometry.toScreen(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15219 v = plot._dataSource.getValue(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15220 if (plot._plotInfo.roundValues)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15221 v = Math.round(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15222 plot._valueFlag.innerHTML = v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15223 var t = new Date(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15224 var unit = plot._timeGeometry.extendedDataSource.unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15225 var l = SimileAjax.DateTime.getTimeLabel(unit, t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15226 plot._timeFlag.innerHTML = l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15227 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15228
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15229 var tw = plot._timeFlag.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15230 var th = plot._timeFlag.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15231 var tdw = Math.round(tw / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15232 var vw = plot._valueFlag.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15233 var vh = plot._valueFlag.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15234 var y = plot._valueGeometry.toScreen(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15235
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15236 if (x + tdw > c.width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15237 var tx = c.width - tdw;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15238 } else if (x - tdw < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15239 var tx = tdw;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15240 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15241 var tx = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15242 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15244 plot._timeplot.placeDiv(plot._valueFlagPole, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15245 left : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15246 top : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15247 height : c.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15248 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15249 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15250 plot._timeplot.placeDiv(plot._timeFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15251 left : tx - tdw,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15252 top : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15253 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15254 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15255
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15256 var sliceId = plot.getSliceId(validTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15257 var pvw, pvh = 0, pinY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15258 if (plot.pins[sliceId].count > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15259 plot._pinValueFlag.innerHTML = plot.pins[sliceId].count;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15260 pvw = plot._pinValueFlag.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15261 pvh = plot._pinValueFlag.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15262 pinY = plot.pins[sliceId].height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15263 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15264 var rightOverflow = x + vw + 14 > c.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15265 var leftOverflow = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15266 if (plot.pins[sliceId].count > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15267 if (x - pvw - 14 < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15268 leftOverflow = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15269 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15270 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15271 var shiftV, shiftP;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15272 if (plot.pins[sliceId].count > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15273 var cut = y - pinY < vh / 2 + pvh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15274 if ((leftOverflow || rightOverflow ) && cut) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15275 shiftV = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15276 shiftP = pvh;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15277 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15278 shiftV = vh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15279 shiftP = pvh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15280 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15281 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15282 shiftV = vh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15283 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15285 if (x + vw + 14 > c.width && y + vh / 2 + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15286 plot._valueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15287 plot._timeplot.placeDiv(plot._valueFlagLineRight, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15288 left : x - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15289 bottom : y - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15290 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15291 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15292 plot._timeplot.placeDiv(plot._valueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15293 left : x - vw - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15294 bottom : y - 13 - shiftV,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15295 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15296 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15297 } else if (x + vw + 14 > c.width && y + vh / 2 + 4 < c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15298 plot._valueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15299 plot._timeplot.placeDiv(plot._valueFlagLineLeft, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15300 left : x - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15301 bottom : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15302 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15303 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15304 plot._timeplot.placeDiv(plot._valueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15305 left : x - vw - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15306 bottom : y + 13 - shiftV,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15307 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15308 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15309 } else if (x + vw + 14 < c.width && y + vh / 2 + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15310 plot._valueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15311 plot._timeplot.placeDiv(plot._valueFlagLineLeft, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15312 left : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15313 bottom : y - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15314 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15315 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15316 plot._timeplot.placeDiv(plot._valueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15317 left : x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15318 bottom : y - 13 - shiftV,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15319 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15320 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15321 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15322 plot._valueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15323 plot._timeplot.placeDiv(plot._valueFlagLineRight, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15324 left : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15325 bottom : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15326 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15327 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15328 plot._timeplot.placeDiv(plot._valueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15329 left : x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15330 bottom : y + 13 - shiftV,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15331 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15332 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15333 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15335 if (plot.pins[sliceId].count > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15336 if (x - pvw - 14 < 0 && pinY + pvh + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15337 plot._pinValueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15338 plot._timeplot.placeDiv(plot._pinValueFlagLineRight, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15339 left : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15340 bottom : pinY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15341 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15342 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15343 plot._timeplot.placeDiv(plot._pinValueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15344 left : x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15345 bottom : pinY - 13 - shiftP,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15346 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15347 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15348 } else if (x - pvw - 14 < 0 && pinY + pvh + 4 < c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15349 plot._pinValueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15350 plot._timeplot.placeDiv(plot._pinValueFlagLineRight, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15351 left : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15352 bottom : pinY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15353 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15354 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15355 plot._timeplot.placeDiv(plot._pinValueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15356 left : x + 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15357 bottom : pinY + 13 - shiftP,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15358 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15359 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15360 } else if (x - pvw - 14 >= 0 && pinY + pvh + 4 > c.height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15361 plot._pinValueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15362 plot._timeplot.placeDiv(plot._pinValueFlagLineRight, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15363 left : x - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15364 bottom : pinY - 13,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15365 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15366 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15367 plot._timeplot.placeDiv(plot._pinValueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15368 left : x - 15 - pvw,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15369 bottom : pinY - 13 - shiftP,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15370 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15371 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15372 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15373 plot._pinValueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15374 plot._timeplot.placeDiv(plot._pinValueFlagLineLeft, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15375 left : x - 14,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15376 bottom : pinY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15377 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15378 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15379 plot._timeplot.placeDiv(plot._pinValueFlag, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15380 left : x - pvw - 15,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15381 bottom : pinY + 13 - shiftP,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15382 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15383 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15384 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15385 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15386 plot._pinValueFlagLineLeft.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15387 plot._pinValueFlagLineRight.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15388 plot._pinValueFlag.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15389 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15390
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15391 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15392
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15393 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15394 var timeplotElement = this._timeplot.getElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15395 this.mouseover = SimileAjax.DOM.registerPlotEvent(timeplotElement, "mouseover", mouseOverHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15396 this.mouseout = SimileAjax.DOM.registerPlotEvent(timeplotElement, "mouseout", mouseOutHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15397 this.mousemove = SimileAjax.DOM.registerPlotEvent(timeplotElement, "mousemove", mouseMoveHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15398
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15399 this.opacityPlot = this._timeplot.putDiv("opacityPlot" + this._timeplot._plots.length, "opacityPlot");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15400 SimileAjax.Graphics.setOpacity(this.opacityPlot, 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15401 // this.opacityPlot.style.zIndex = this._timeplot._plots.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15402 this._timeplot.placeDiv(this.opacityPlot, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15403 left : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15404 bottom : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15405 width : this._canvas.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15406 height : this._canvas.height
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15407 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15408 this._opacityCanvas = document.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15409 this.opacityPlot.appendChild(this._opacityCanvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15410 if (!this._opacityCanvas.getContext && G_vmlCanvasManager)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15411 this._opacityCanvas = G_vmlCanvasManager.initElement(this._opacityCanvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15412 this._opacityCanvas.width = this._canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15413 this._opacityCanvas.height = this._canvas.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15414 this._opacityCanvas.style.position = 'absolute';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15415 this._opacityCanvas.style.left = '0px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15416 this.opacityPlot.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15417
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15418 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15419 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15420
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15421 SimileAjax.DOM.registerPlotEvent = function(elmt, eventName, handler) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15422 var handler2 = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15423 evt = (evt) ? evt : ((event) ? event : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15424 if (evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15425 var target = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15426 if (target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15427 target = (target.nodeType == 1 || target.nodeType == 9) ? target : target.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15429
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15430 return handler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15431 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15432 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15433 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15434 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15435 elmt.attachEvent("on" + eventName, handler2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15436 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15437 elmt.addEventListener(eventName, handler2, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15438 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15439
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15440 return handler2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15441 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15442
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15443 SimileAjax.DOM.getEventRelativeCoordinates = function(evt, elmt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15444 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15445 var coords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15446 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15447 x : evt.clientX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15448 y : evt.clientY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15449 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15450 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15451 var coords = SimileAjax.DOM.getPageCoordinates(elmt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15452
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15453 if ((evt.type == "DOMMouseScroll") && SimileAjax.Platform.browser.isFirefox && (SimileAjax.Platform.browser.majorVersion == 2)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15454 // Due to: https://bugzilla.mozilla.org/show_bug.cgi?id=352179
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15455
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15456 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15457 x : evt.screenX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15458 y : evt.screenY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15459 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15460 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15461 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15462 x : evt.pageX - coords.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15463 y : evt.pageY - coords.top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15464 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15465 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15466 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15467 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15468
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15469 SimileAjax.Graphics.setOpacity = function(elmt, opacity) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15470 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15471 elmt.style.filter = "alpha(opacity = " + opacity + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15472 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15473 var o = (opacity / 100).toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15474 elmt.style.opacity = o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15475 elmt.style.MozOpacity = o;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15476 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15477 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15479 Timeplot.Plot.prototype.fullOpacityPlot = function(left, right, lp, rp, c) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15480
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15481 var ctx = this._opacityCanvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15482
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15483 ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15484 ctx.lineWidth = this._plotInfo.lineWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15485 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15486
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15487 var h = this._canvas.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15488 ctx.fillStyle = this._plotInfo.lineColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15489
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15490 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15491 var times = data.times;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15492 var values = data.values;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15493
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15494 var first = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15495 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15496 ctx.fillStyle = this._plotInfo.lineColor.toString();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15497 var lastX = 0, lastY = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15498 for (var t = 0; t < times.length; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15499 if (!(times[t].getTime() < left.getTime() || times[t].getTime() > right.getTime())) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15500 var x = this._timeGeometry.toScreen(times[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15501 var y = this._valueGeometry.toScreen(values[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15502 if (first) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15503 ctx.moveTo(x, h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15504 first = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15505 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15506 if (this.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15507 ctx.lineTo(x, h - lastY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15508 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15509 ctx.lineTo(x, h - y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15510 if (times[t].getTime() == right.getTime() || t == times.length - 1)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15511 ctx.lineTo(x, h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15512 lastX = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15513 lastY = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15514 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15515 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15516 ctx.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15517
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15518 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15519
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15520 Timeplot._Impl.prototype.regularGrid = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15521
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15522 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15523 var ctx = canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15524 var gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15525 gradient.addColorStop(0, "rgb(0,0,0)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15526 gradient.addColorStop(1, "rgba(255,255,255,0.9)");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15527 ctx.strokeStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15528 ctx.lineWidth = 0.5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15529 ctx.lineJoin = 'miter';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15530
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15531 var xDist = canvas.width / 9;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15532 var positions = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15533 for (var i = 1; i < 9; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15534 var x = i * xDist;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15535 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15536 ctx.moveTo(x, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15537 ctx.lineTo(x, canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15538
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15539 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15540 positions.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15541 label : '',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15542 x : x
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15543 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15544 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15545 return positions;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15546
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15547 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15548
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15549 Timeplot.Plot.prototype._plot = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15550 var ctx = this._canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15551 var data = this._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15552 if (data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15553 var times = data.times;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15554 var values = data.values;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15555 var T = times.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15556 ctx.moveTo(0, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15557 var lastX = 0, lastY = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15558 for (var t = 0; t < T; t++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15559 var x = this._timeGeometry.toScreen(times[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15560 var y = this._valueGeometry.toScreen(values[t]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15561 if (t > 0 && (values[t - 1] > 0 || values[t] > 0 )) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15562 if (this.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15563 ctx.lineTo(x, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15564 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15565 if (this.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15566 if (values[t - 1] > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15567 ctx.lineTo(x, lastY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15568 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15569 ctx.moveTo(x, lastY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15570 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15571 ctx.lineTo(x, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15572 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15573 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15574 ctx.moveTo(x, y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15575 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15576 lastX = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15577 lastY = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15579 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15580 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15581
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15582 SimileAjax.DOM.registerEvent = function(elmt, eventName, handler) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15583 var handler2 = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15584 evt = (evt) ? evt : ((event) ? event : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15585 if (evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15586 var target = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15587 if (target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15588 target = (target.nodeType == 1 || target.nodeType == 9) ? target : target.parentNode;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15589 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15590
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15591 return handler(elmt, evt, target);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15592 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15593 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15594 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15595 if (SimileAjax.Platform.browser.isIE) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15596 elmt.attachEvent("on" + eventName, handler2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15597 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15598 if (eventName == "mousewheel") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15599 eventName = "DOMMouseScroll";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15600 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15601 elmt.addEventListener(eventName, handler2, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15602 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15603 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15604
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15605 Timeplot._Impl.prototype._setUpright = function(ctx, canvas) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15606 // excanvas+IE requires this to be done only once, ever; actual canvas
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15607 // implementations reset and require this for each call to re-layout
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15608 // modified: problem does not exist for IE9
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15609 if (!SimileAjax.Platform.browser.isIE)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15610 this._upright = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15611 else if (SimileAjax.Platform.browser.majorVersion > 8)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15612 this._upright = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15613 if (!this._upright) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15614 this._upright = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15615 ctx.translate(0, canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15616 ctx.scale(1, -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15617 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15618 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15619
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15620 Timeplot._Impl.prototype._resizeCanvas = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15621 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15622 if (canvas.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15623 canvas.firstChild.style.width = canvas.clientWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15624 canvas.firstChild.style.height = canvas.clientHeight + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15625 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15626 for (var i = 0; i < this._plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15627 var opacityCanvas = this._plots[i]._opacityCanvas;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15628 if (opacityCanvas.firstChild) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15629 opacityCanvas.firstChild.style.width = opacityCanvas.clientWidth + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15630 opacityCanvas.firstChild.style.height = opacityCanvas.clientHeight + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15631 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15632 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15633 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15635 Timeplot._Impl.prototype.getWidth = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15636 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15637 if ( typeof canvas.width != 'undefined' && this._containerDiv.clientWidth == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15638 return canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15639 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15640 return this._containerDiv.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15641 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15642
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15643 Timeplot._Impl.prototype.getHeight = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15644 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15645 if ( typeof canvas.height != 'undefined' && this._containerDiv.clientHeight == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15646 return canvas.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15647 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15648 return this._containerDiv.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15649 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15651 Timeplot._Impl.prototype._prepareCanvas = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15652 var canvas = this.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15653
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15654 // using jQuery. note we calculate the average padding; if your
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15655 // padding settings are not symmetrical, the labels will be off
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15656 // since they expect to be centered on the canvas.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15657 var con = SimileAjax.jQuery(this._containerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15658 this._paddingX = (parseInt(con.css('paddingLeft')) + parseInt(con.css('paddingRight'))) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15659 this._paddingY = (parseInt(con.css('paddingTop')) + parseInt(con.css('paddingBottom'))) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15660
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15661 if (isNaN(this._paddingX)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15662 this._paddingX = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15663 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15664 if (isNaN(this._paddingY)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15665 this._paddingY = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15666 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15667
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15668 canvas.width = this.getWidth() - (this._paddingX * 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15669 canvas.height = this.getHeight() - (this._paddingY * 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15670
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15671 var ctx = canvas.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15672 this._setUpright(ctx, canvas);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15673 ctx.globalCompositeOperation = 'source-over';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15674 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15675 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15676
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15677 OpenLayers.js -- OpenLayers Map Viewer Library
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15678
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15679 Copyright (c) 2006-2012 by OpenLayers Contributors
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15680 Published under the 2-clause BSD license.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15681 See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15682
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15683 Includes compressed code under the following licenses:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15684
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15685 (For uncompressed versions of the code used, please see the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15686 OpenLayers Github repository: <https://github.com/openlayers/openlayers>)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15687
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15688 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15689
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15690 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15691 * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15692 * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15693 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15694 * Licensed under the Apache License, Version 2.0 (the "License");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15695 * you may not use this file except in compliance with the License.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15696 * You may obtain a copy of the License at
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15697 * http://www.apache.org/licenses/LICENSE-2.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15698 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15699
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15700 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15701 * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15702 * Copyright (c) 2006, Yahoo! Inc.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15703 * All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15704 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15705 * Redistribution and use of this software in source and binary forms, with or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15706 * without modification, are permitted provided that the following conditions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15707 * are met:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15708 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15709 * * Redistributions of source code must retain the above copyright notice,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15710 * this list of conditions and the following disclaimer.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15711 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15712 * * Redistributions in binary form must reproduce the above copyright notice,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15713 * this list of conditions and the following disclaimer in the documentation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15714 * and/or other materials provided with the distribution.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15715 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15716 * * Neither the name of Yahoo! Inc. nor the names of its contributors may be
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15717 * used to endorse or promote products derived from this software without
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15718 * specific prior written permission of Yahoo! Inc.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15719 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15720 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15721 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15722 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15723 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15724 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15725 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15726 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15727 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15728 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15729 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15730 * POSSIBILITY OF SUCH DAMAGE.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15731 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15732 var OpenLayers={VERSION_NUMBER:"Release 2.12",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\/))(OpenLayers[^\/]*?\.js)(\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15733 OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}!("function"==typeof window.Event&&b instanceof window.Event)&&(b.hasOwnProperty&&b.hasOwnProperty("toString"))&&(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},camelize:function(a){for(var a=a.split("-"),b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\.+/),h=0;h<g.length;h++)0==h&&(f=b),f=f[g[h]];"function"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15734 typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a){return OpenLayers.String.isNumeric(a)?parseFloat(a):a}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15735 OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15736 0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b}};OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15737 OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15738 a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15739 ","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15740 getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15741 d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){var b=null;if(a){switch(a.CLASS_NAME){case "OpenLayers.LonLat":b=new OpenLayers.Bounds(a.lon,a.lat,a.lon,a.lat);break;case "OpenLayers.Geometry.Point":b=new OpenLayers.Bounds(a.x,a.y,a.x,a.y);break;case "OpenLayers.Bounds":b=a}if(b){this.centerLonLat=null;if(null==this.left||b.left<this.left)this.left=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15742 b.left;if(null==this.bottom||b.bottom<this.bottom)this.bottom=b.bottom;if(null==this.right||b.right>this.right)this.right=b.right;if(null==this.top||b.top>this.top)this.top=b.top}}},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});var b=b||{},c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15743 a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;var a=OpenLayers.Util.toFloat(a),b=OpenLayers.Util.toFloat(b),d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};if(b.worldBounds)var c=this.wrapDateLine(b.worldBounds),a=a.wrapDateLine(b.worldBounds);else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15744 a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15745 {inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c),a=this.contains(a.right,a.top,c);return b?d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15746 null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){var b=b||{},c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15747 a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&(c>a.left&&e.right-d>a.right)&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15748 OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\s)"+b+"(\\s|$)").test(c)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15749 addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\s+)"+b+"(\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){var a=OpenLayers.Util.getElement(a),c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15750 c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&(-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position"))&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15751 OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15752 OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15753 return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15754 (function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15755 b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!!(a&&1===a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};"undefined"===typeof window.$&&(window.$=OpenLayers.Util.getElement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15756 OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;c>=0;c--)a[c]==b&&a.splice(c,1);return a};OpenLayers.Util.indexOf=function(a,b){if(typeof a.indexOf=="function")return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15757 OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){if(b)a.id=b;if(c){a.style.left=c.x+"px";a.style.top=c.y+"px"}if(d){a.style.width=d.w+"px";a.style.height=d.h+"px"}if(e)a.style.position=e;if(f)a.style.border=f;if(g)a.style.overflow=g;if(parseFloat(h)>=0&&parseFloat(h)<1){a.style.filter="alpha(opacity="+h*100+")";a.style.opacity=h}else if(parseFloat(h)==1){a.style.filter="";a.style.opacity=""}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15758 OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var i=document.createElement("div");if(d)i.style.backgroundImage="url("+d+")";a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,g,h);return i};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15759 OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var i=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(i,a,b,c,e,f,null,g);if(h){i.style.display="none";b=function(){i.style.display="";OpenLayers.Event.stopObservingElement(i)};OpenLayers.Event.observe(i,"load",b);OpenLayers.Event.observe(i,"error",b)}i.style.alt=a;i.galleryImg="no";if(d)i.src=d;return i};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15760 OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=false;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&a>=5.5&&a<7}return OpenLayers.Util.alphaHackNeeded};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15761 OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,i);b=a.childNodes[0];if(e)b.src=e;OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);if(OpenLayers.Util.alphaHack()){if(a.style.display!="none")a.style.display="inline-block";h==null&&(h="scale");a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b.src+"', sizingMethod='"+h+"')";if(parseFloat(a.style.opacity)>=0&&parseFloat(a.style.opacity)<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15762 1)a.style.filter=a.style.filter+(" alpha(opacity="+a.style.opacity*100+")");b.style.filter="alpha(opacity=0)"}};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,i){var j=OpenLayers.Util.createDiv(),i=OpenLayers.Util.createImage(null,null,null,null,null,null,null,i);i.className="olAlphaImg";j.appendChild(i);OpenLayers.Util.modifyAlphaImageDiv(j,a,b,c,d,e,f,g,h);return j};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15763 OpenLayers.Util.applyDefaults=function(a,b){var a=a||{},c=typeof window.Event=="function"&&b instanceof window.Event,d;for(d in b)if(a[d]===void 0||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];if(!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString"))a.toString=b.toString;return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15764 OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(d!=null&&typeof d!="function"){if(typeof d=="object"&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++){f=d[g];e.push(encodeURIComponent(f===null||f===void 0?"":f))}d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(d.pop()===" "?b:d.length?"&"+b:"?"+b);return c};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15765 OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15766 OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;if(!b)b=a.textContent;if(!b)b=a.firstChild.nodeValue},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&c!=null;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15767 OpenLayers.Util.toFloat=function(a,b){if(b==null)b=OpenLayers.Util.DEFAULT_PRECISION;typeof a!=="number"&&(a=parseFloat(a));return b===0?a:parseFloat(a.toPrecision(b))};OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return a*180/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15768 OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),i=Math.sin(g),g=Math.cos(g),j=Math.sin(h),h=Math.cos(h),k=f,l=2*Math.PI,m=20;Math.abs(k-l)>1.0E-12&&--m>0;){var n=Math.sin(k),o=Math.cos(k),p=Math.sqrt(h*n*h*n+(g*j-i*h*o)*(g*j-i*h*o));if(p==0)return 0;var o=i*j+g*h*o,q=Math.atan2(p,o),r=Math.asin(g*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15769 h*n/p),s=Math.cos(r)*Math.cos(r),n=o-2*i*j/s,t=c/16*s*(4+c*(4-3*s)),l=k,k=f+(1-t)*c*Math.sin(r)*(q+t*p*(n+t*o*(-1+2*n*n)))}if(m==0)return NaN;d=s*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(q-c*p*(n+c/4*(o*(-1+2*n*n)-c/6*n*(-3+4*p*p)*(-3+4*n*n))))).toFixed(3)/1E3};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15770 OpenLayers.Util.destinationVincenty=function(a,b,c){for(var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon,a=a.lat,i=d.rad(b),b=Math.sin(i),i=Math.cos(i),a=(1-h)*Math.tan(d.rad(a)),j=1/Math.sqrt(1+a*a),k=a*j,l=Math.atan2(a,i),a=j*b,m=1-a*a,f=m*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),o=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),p=2*Math.PI;Math.abs(f-p)>1.0E-12;)var q=Math.cos(2*l+f),r=Math.sin(f),s=Math.cos(f),t=o*r*(q+o/4*(s*(-1+2*q*q)-o/6*q*(-3+4*r*r)*(-3+4*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15771 q*q))),p=f,f=c/(g*n)+t;c=k*r-j*s*i;g=Math.atan2(k*s+j*r*i,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(r*b,j*s-k*r*i);i=h/16*m*(4+h*(4-3*m));q=b-(1-i)*h*a*(f+i*r*(q+i*s*(-1+2*q*q)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(q),d.deg(g))};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15772 OpenLayers.Util.getParameters=function(a){var a=a===null||a===void 0?window.location.href:a,b="";if(OpenLayers.String.contains(a,"?"))var b=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,b=a.substring(b,c);for(var a={},b=b.split(/[&;]/),c=0,d=b.length;c<d;++c){var e=b[c].split("=");if(e[0]){var f=e[0];try{f=decodeURIComponent(f)}catch(g){f=unescape(f)}e=(e[1]||"").replace(/\+/g," ");try{e=decodeURIComponent(e)}catch(h){e=unescape(e)}e=e.split(",");e.length==1&&(e=e[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15773 a[f]=e}}return a};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a==null&&(a="id_");OpenLayers.Util.lastSeqID=OpenLayers.Util.lastSeqID+1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.3701,km:39370.1,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15774 OpenLayers.METERS_PER_INCH=0.0254000508001016;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15775 OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15776 Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15777 OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15778 Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15779 SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15780 OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15781 OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15782 "us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return a>1?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;if(a){b==null&&(b="degrees");c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH)}return c};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15783 OpenLayers.Util.getScaleFromResolution=function(a,b){b==null&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15784 OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(a,"position")=="absolute"&&(a.style.top==""||a.style.left==""),e=null;if(a.getBoundingClientRect){a=a.getBoundingClientRect();e=c.scrollTop;b[0]=a.left+c.scrollLeft;b[1]=a.top+e}else if(document.getBoxObjectFor&&!d){a=document.getBoxObjectFor(a);c=document.getBoxObjectFor(c);b[0]=a.screenX-c.screenX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15785 b[1]=a.screenY-c.screenY}else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;){b[0]=b[0]+e.offsetLeft;b[1]=b[1]+e.offsetTop;e=e.offsetParent}c=OpenLayers.BROWSER_NAME;if(c=="opera"||c=="safari"&&OpenLayers.Element.getStyle(a,"position")=="absolute")b[1]=b[1]-document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]=b[0]-e.scrollLeft;if(c!="opera"||e.tagName!="TR")b[1]=b[1]-e.scrollTop;e=e.offsetParent}}return b};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15786 OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;if(a==void 0){a=OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!="CSS1Compat"?document.body:document.documentElement;arguments.callee.viewportElement=a}return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15787 OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var a=OpenLayers.Util.createUrlObject(a,c),b=OpenLayers.Util.createUrlObject(b,c),d;for(d in a)if(d!=="args"&&a[d]!=b[d])return false;for(d in a.args){if(a.args[d]!=b.args[d])return false;delete b.args[d]}for(d in b.args)return false;return true};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15788 OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\w+:\/\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;if(a.indexOf("/")===0)a=d+a;else{c=c.pathname.split("/");c.pop();a=d+c.join("/")+"/"+a}}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?c.port=="80"||c.port=="0"?"":c.port:c.port==""||c.port=="0"?"80":c.port;d.hash=b.ignoreHash||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15789 c.hash==="#"?"":c.hash;var e=c.search;if(!e){e=a.indexOf("?");e=e!=-1?a.substr(e):""}d.args=OpenLayers.Util.getParameters(e);d.pathname=c.pathname.charAt(0)=="/"?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=b==-1?c!=-1?a.substr(0,c):a:c!=-1?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return a.indexOf("webkit")==-1&&a.indexOf("gecko")!=-1}();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15790 OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();b.indexOf("opera")!=-1?a="opera":b.indexOf("msie")!=-1?a="msie":b.indexOf("safari")!=-1?a="safari":b.indexOf("mozilla")!=-1&&(a=b.indexOf("firefox")!=-1?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15791 OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=false,i=null,j=g;j&&j.tagName.toLowerCase()!="body";){var k=OpenLayers.Element.getStyle(j,"position");if(k=="absolute"){h=true;break}else if(k&&k!="static")break;j=j.parentNode}if(h&&(g.clientHeight===0||g.clientWidth===0)){i=document.createElement("div");i.style.visibility="hidden";i.style.position="absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15792 i.style.overflow="visible";i.style.width=document.body.clientWidth+"px";i.style.height=document.body.clientHeight+"px";i.appendChild(f)}f.style.position="absolute";if(b)if(b.w){d=b.w;f.style.width=d+"px"}else if(b.h){e=b.h;f.style.height=e+"px"}if(c&&c.displayClass)f.className=c.displayClass;b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes){a=0;for(c=b.childNodes.length;a<c;a++)if(b.childNodes[a].style)b.childNodes[a].style.overflow="visible"}f.appendChild(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15793 i?g.appendChild(i):g.appendChild(f);if(!d){d=parseInt(b.scrollWidth);f.style.width=d+"px"}e||(e=parseInt(b.scrollHeight));f.removeChild(b);if(i){i.removeChild(f);g.removeChild(i)}else g.removeChild(f);return new OpenLayers.Size(d,e)};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15794 OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(a==null){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15795 OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15796 OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");var a=(a+540)%360-180,d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round((f-d)/(1/60)*10),f=f/10;if(f>=60){f=f-60;d=d+1;if(d>=60){d=d-60;e=e+1}}e<10&&(e="0"+e);e=e+"\u00b0";if(c.indexOf("dm")>=0){d<10&&(d="0"+d);e=e+(d+"'");if(c.indexOf("dms")>=0){f<10&&(f="0"+f);e=e+(f+'"')}}return e=b=="lon"?e+(a<0?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(a<0?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(){throw Error("Read not implemented.");},write:function(){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.CSWGetRecords=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetRecords.DEFAULTS),b=OpenLayers.Format.CSWGetRecords["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSWGetRecords version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetRecords.DEFAULTS={version:"2.0.2"};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15797 "_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15798 this.handler.setMap(a)},draw:function(a){if(null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title))this.div.title=this.title;null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15799 a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15800 !0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Event={observers:!1,KEY_SPACE:32,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15801 b){b||(a.preventDefault?a.preventDefault():a.returnValue=!1);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent))b="keydown";this.observers||(this.observers={});if(!a._eventCacheID){var e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15802 "eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15803 b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){var d=d||!1,a=OpenLayers.Util.getElement(a),e=a._eventCacheID;if("keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent))b="keydown";var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var i=g[h];if(i.name==b&&i.observer==c&&i.useCapture==d){g.splice(h,1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15804 break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15805 OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15806 {};null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(){},attachToElement:function(a){this.element?OpenLayers.Event.stopObservingElement(this.element):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15807 (this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=0,c=this.BROWSER_EVENTS.length;b<c;b++)OpenLayers.Event.observe(a,this.BROWSER_EVENTS[b],this.eventHandler);OpenLayers.Event.observe(a,"dragstart",OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15808 !this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15809 b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&!(d=c[e],d=d.func.apply(d.obj,[b]),void 0!=d&&!1==d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15810 handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=c[h],d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var a=document.body;if(a&&(!(0!=a.scrollTop||0!=a.scrollLeft)||!navigator.userAgent.match(/iPhone/i)))this.element.offsets=null},getMousePosition:function(a){this.includeXY?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15811 this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[b.scrollLeft,b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15812 this.element.scrolls[0]-this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15813 delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",{buttonElement:c}),OpenLayers.Event.stop(a),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15814 b=!1}else this.startEvt&&(this.completeRegEx.test(a.type)&&(b=OpenLayers.Util.pagePosition(c),this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})),this.cancelRegEx.test(a.type)&&delete this.startEvt,OpenLayers.Event.stop(a),b=!1);this.startRegEx.test(a.type)&&(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else delete this.startEvt;return b}});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:{w:180,h:90},layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:!1,handlers:null,resolutionFactor:1,maximized:!1,initialize:function(a){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[a])},destroy:function(){this.mapDiv&&(this.handlers.click&&this.handlers.click.destroy(),this.handlers.drag&&this.handlers.drag.destroy(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15815 this.ovmap&&this.ovmap.viewPortDiv.removeChild(this.extentRectangle),this.extentRectangle=null,this.rectEvents&&(this.rectEvents.destroy(),this.rectEvents=null),this.ovmap&&(this.ovmap.destroy(),this.ovmap=null),this.element.removeChild(this.mapDiv),this.mapDiv=null,this.div.removeChild(this.element),this.element=null,this.maximizeDiv&&(this.div.removeChild(this.maximizeDiv),this.maximizeDiv=null),this.minimizeDiv&&(this.div.removeChild(this.minimizeDiv),this.minimizeDiv=null),this.map.events.un({buttonclick:this.onButtonClick,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15816 moveend:this.update,changebaselayer:this.baseLayerDraw,scope:this}),OpenLayers.Control.prototype.destroy.apply(this,arguments))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(0===this.layers.length)if(this.map.baseLayer)this.layers=[this.map.baseLayer.clone()];else return this.map.events.register("changebaselayer",this,this.baseLayerDraw),this.div;this.element=document.createElement("div");this.element.className=this.displayClass+"Element";this.element.style.display="none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15817 this.mapDiv=document.createElement("div");this.mapDiv.style.width=this.size.w+"px";this.mapDiv.style.height=this.size.h+"px";this.mapDiv.style.position="relative";this.mapDiv.style.overflow="hidden";this.mapDiv.id=OpenLayers.Util.createUniqueID("overviewMap");this.extentRectangle=document.createElement("div");this.extentRectangle.style.position="absolute";this.extentRectangle.style.zIndex=1E3;this.extentRectangle.className=this.displayClass+"ExtentRectangle";this.element.appendChild(this.mapDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15818 this.div.appendChild(this.element);if(this.outsideViewport)this.element.style.display="";else{this.div.className+=" "+this.displayClass+"Container";var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+"MaximizeButton",null,null,a,"absolute");this.maximizeDiv.style.display="none";this.maximizeDiv.className=this.displayClass+"MaximizeButton olButton";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15819 this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_minimizeDiv",null,null,a,"absolute");this.minimizeDiv.style.display="none";this.minimizeDiv.className=this.displayClass+"MinimizeButton olButton";this.div.appendChild(this.minimizeDiv);this.minimizeControl()}this.map.getExtent()&&this.update();this.map.events.on({buttonclick:this.onButtonClick,moveend:this.update,scope:this});this.maximized&&this.maximizeControl();return this.div},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15820 this,this.baseLayerDraw)},rectDrag:function(a){var b=this.handlers.drag.last.x-a.x,c=this.handlers.drag.last.y-a.y;if(0!=b||0!=c){var d=this.rectPxBounds.top,e=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),f=this.rectPxBounds.getWidth(),c=Math.max(0,d-c),c=Math.min(c,this.ovmap.size.h-this.hComp-a),b=Math.max(0,e-b),b=Math.min(b,this.ovmap.size.w-this.wComp-f);this.setRectPxBounds(new OpenLayers.Bounds(b,c+a,b+f,c))}},mapDivClick:function(a){var b=this.rectPxBounds.getCenterPixel(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15821 c=a.xy.x-b.x,d=a.xy.y-b.y,e=this.rectPxBounds.top,f=this.rectPxBounds.left,a=Math.abs(this.rectPxBounds.getHeight()),b=this.rectPxBounds.getWidth(),d=Math.max(0,e+d),d=Math.min(d,this.ovmap.size.h-a),c=Math.max(0,f+c),c=Math.min(c,this.ovmap.size.w-b);this.setRectPxBounds(new OpenLayers.Bounds(c,d+a,c+b,d));this.updateMapToRect()},onButtonClick:function(a){a.buttonElement===this.minimizeDiv?this.minimizeControl():a.buttonElement===this.maximizeDiv&&this.maximizeControl()},maximizeControl:function(a){this.element.style.display=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15822 "";this.showToggle(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.element.style.display="none";this.showToggle(!0);null!=a&&OpenLayers.Event.stop(a)},showToggle:function(a){this.maximizeDiv.style.display=a?"":"none";this.minimizeDiv.style.display=a?"none":""},update:function(){null==this.ovmap&&this.createMap();(this.autoPan||!this.isSuitableOverview())&&this.updateOverview();this.updateRectToMap()},isSuitableOverview:function(){var a=this.map.getExtent(),b=this.map.maxExtent,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15823 a=new OpenLayers.Bounds(Math.max(a.left,b.left),Math.max(a.bottom,b.bottom),Math.min(a.right,b.right),Math.min(a.top,b.top));this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()));b=this.ovmap.getResolution()/this.map.getResolution();return b>this.minRatio&&b<=this.maxRatio&&this.ovmap.getExtent().containsBounds(a)},updateOverview:function(){var a=this.map.getResolution(),b=this.ovmap.getResolution(),c=b/a;c>this.maxRatio?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15824 b=this.minRatio*a:c<=this.minRatio&&(b=this.maxRatio*a);this.ovmap.getProjection()!=this.map.getProjection()?(a=this.map.center.clone(),a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject())):a=this.map.center;this.ovmap.setCenter(a,this.ovmap.getZoomForResolution(b*this.resolutionFactor));this.updateRectToMap()},createMap:function(){var a=OpenLayers.Util.extend({controls:[],maxResolution:"auto",fallThrough:!1},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,a);this.ovmap.viewPortDiv.appendChild(this.extentRectangle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15825 OpenLayers.Event.stopObserving(window,"unload",this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=(this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-right-width")))?this.wComp:2;this.hComp=(this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-bottom-width")))?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15826 this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.mapDivClick},{single:!0,"double":!1,stopSingle:!0,stopDouble:!0,pixelTolerance:1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,!0);this.rectEvents.register("mouseover",this,function(){!this.handlers.drag.active&&!this.map.dragging&&this.handlers.drag.activate()});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15827 this.rectEvents.register("mouseout",this,function(){this.handlers.drag.dragging||this.handlers.drag.deactivate()});if(this.ovmap.getProjection()!=this.map.getProjection()){var a=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units,b=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=a&&b?OpenLayers.INCHES_PER_UNIT[a]/OpenLayers.INCHES_PER_UNIT[b]:1}},updateRectToMap:function(){var a=this.getRectBoundsFromMapBounds(this.ovmap.getProjection()!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15828 this.map.getProjection()?this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()):this.map.getExtent());a&&this.setRectPxBounds(a)},updateMapToRect:function(){var a=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject()));this.map.panTo(a.getCenterLonLat())},setRectPxBounds:function(a){var b=Math.max(a.top,0),c=Math.max(a.left,0),d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15829 Math.min(a.top+Math.abs(a.getHeight()),this.ovmap.size.h-this.hComp),a=Math.min(a.left+a.getWidth(),this.ovmap.size.w-this.wComp),e=Math.max(a-c,0),f=Math.max(d-b,0);e<this.minRectSize||f<this.minRectSize?(this.extentRectangle.className=this.displayClass+this.minRectDisplayClass,e=c+e/2-this.minRectSize/2,this.extentRectangle.style.top=Math.round(b+f/2-this.minRectSize/2)+"px",this.extentRectangle.style.left=Math.round(e)+"px",this.extentRectangle.style.height=this.minRectSize+"px",this.extentRectangle.style.width=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15830 this.minRectSize+"px"):(this.extentRectangle.className=this.displayClass+"ExtentRectangle",this.extentRectangle.style.top=Math.round(b)+"px",this.extentRectangle.style.left=Math.round(c)+"px",this.extentRectangle.style.height=Math.round(f)+"px",this.extentRectangle.style.width=Math.round(e)+"px");this.rectPxBounds=new OpenLayers.Bounds(Math.round(c),Math.round(d),Math.round(a),Math.round(b))},getRectBoundsFromMapBounds:function(a){var b=this.getOverviewPxFromLonLat({lon:a.left,lat:a.bottom}),a=this.getOverviewPxFromLonLat({lon:a.right,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15831 lat:a.top}),c=null;b&&a&&(c=new OpenLayers.Bounds(b.x,b.y,a.x,a.y));return c},getMapBoundsFromRectBounds:function(a){var b=this.getLonLatFromOverviewPx({x:a.left,y:a.bottom}),a=this.getLonLatFromOverviewPx({x:a.right,y:a.top});return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},getLonLatFromOverviewPx:function(a){var b=this.ovmap.size,c=this.ovmap.getResolution(),d=this.ovmap.getExtent().getCenterLonLat();return{lon:d.lon+(a.x-b.w/2)*c,lat:d.lat-(a.y-b.h/2)*c}},getOverviewPxFromLonLat:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15832 this.ovmap.getResolution(),c=this.ovmap.getExtent();if(c)return{x:Math.round(1/b*(a.lon-c.left)),y:Math.round(1/b*(c.top-a.lat))}},CLASS_NAME:"OpenLayers.Control.OverviewMap"});OpenLayers.Animation=function(a){var b=!(!a.requestAnimationFrame&&!a.webkitRequestAnimationFrame&&!a.mozRequestAnimationFrame&&!a.oRequestAnimationFrame&&!a.msRequestAnimationFrame),c=function(){var b=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,16)};return function(c,d){b.apply(a,[c,d])}}(),d=0,e={};return{isNative:b,requestFrame:c,start:function(a,b,h){var b=0<b?b:Number.POSITIVE_INFINITY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15833 i=++d,j=+new Date;e[i]=function(){e[i]&&+new Date-j<=b?(a(),e[i]&&c(e[i],h)):delete e[i]};c(e[i],h);return i},stop:function(a){delete e[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.time=0;OpenLayers.Animation.stop(this.animationId);this.animationId=null;this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15834 this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&this.callbacks.eachStep.call(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15835 a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15836 OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15837 OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;window.Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),window.Proj4js&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15838 this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15839 OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15840 OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15841 OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{var b=b.getCode(),c=c.getCode(),d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15842 (function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;a.y=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,m,n,o,p;g=0;for(m=d.length;g<m;++g){n=d[g];e(c,n,b);e(n,c,a);for(p=g+1;p<m;++p)o=d[p],e(n,o,f),e(o,n,f)}}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15843 "EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15844 maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!0,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15845 "theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);this.maxExtent&&!(this.maxExtent instanceof OpenLayers.Bounds)&&(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));this.minExtent&&!(this.minExtent instanceof OpenLayers.Bounds)&&(this.minExtent=new OpenLayers.Bounds(this.minExtent));this.restrictedExtent&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15846 !(this.restrictedExtent instanceof OpenLayers.Bounds)&&(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));this.center&&!(this.center instanceof OpenLayers.LonLat)&&(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15847 this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.width="100px";this.layerContainerDiv.style.height=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15848 "100px";this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);9>parseFloat(navigator.appVersion.split("MSIE")[1])?this.events.register("resize",this,this.updateSize):(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15849 e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15850 OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15851 "unload",this.unloadDestroy);b&&b.layers&&(delete this.center,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15852 this.panTween&&(this.panTween.stop(),this.panTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy?OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy):this.events.unregister("resize",this,this.updateSize);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15853 this.layers=null}this.viewPortDiv&&this.div.removeChild(this.viewPortDiv);this.viewPortDiv=null;this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15854 typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15855 this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15856 "";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15857 b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15858 {map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15859 this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null!=this.baseLayer&&!this.allOverlays&&this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15860 !1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15861 (a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15862 a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15863 if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,a.h=this.div.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15864 if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&this.size&&(this.center=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15865 this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)(0!=a||0!=b)&&this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter()),a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15866 panTo:function(a){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(a)){this.panTween||(this.panTween=new OpenLayers.Tween(this.panMethod));var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(){this.moveTo(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15867 this.dragging=false;this.events.triggerEvent("moveend")},this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,i=0;this.restrictedExtent&&(h=c,i=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-i&&f>=this.minPx.y+i?Math.round(b):0;if(a||b){this.dragging||(this.dragging=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15868 !0,this.events.triggerEvent("movestart"));this.center=null;a&&(this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-a+"px",this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-b+"px",this.minPx.y-=b,this.maxPx.y-=b);d=0;for(e=this.layers.length;d<e;++d)if(c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange))c.moveByPx(a,b),c.events.triggerEvent("move");this.events.triggerEvent("move")}},adjustZoom:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15869 this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;if(this.getResolutionForZoom(a)>c)for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}return a},moveTo:function(a,b,c){null!=a&&!(a instanceof OpenLayers.LonLat)&&(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));if(this.baseLayer.wrapDateLine){var d=b,b=this.adjustZoom(b);b!==d&&(a=this.getCenter())}var d=c.dragging||this.dragging,e=c.forceZoomChange;!this.getCachedCenter()&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15870 !this.isValidLonLat(a)&&(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15871 (a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart");f&&(!e&&this.center&&this.centerLayerContainer(a),this.center=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15872 a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,i=Math.round(f.getWidth()/a),j=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-i)/2-g/a,y:(this.size.h-j)/2-h/a};this.maxPx={x:this.minPx.x+Math.round(f.getWidth()/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15873 a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)if(f=this.layers[b],f!==this.baseLayer&&!f.isBaseLayer&&(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15874 g&&f.visibility))f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e});this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=parseInt(this.layerContainerDiv.style.left),a=parseInt(this.layerContainerDiv.style.top),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15875 e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.layerContainerDiv.style.left=e+"px";this.layerContainerDiv.style.top=b+"px";d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15876 null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15877 null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15878 b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a){this.isValidZoomLevel(a)&&this.setCenter(null,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15879 b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},zoomToMaxExtent:function(a){this.zoomToExtent(this.getMaxExtent({restricted:a?a.restricted:!0}))},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15880 c/2,e=this.getCachedCenter();this.zoomToExtent(new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c),b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15881 a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution(),a=b.add(-c/2,0),d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15882 null;if(null!=a)var b=parseInt(this.layerContainerDiv.style.left),c=parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);return b},getLayerPxFromViewPortPx:function(a){var b=null;if(null!=a){var b=-parseInt(this.layerContainerDiv.style.left),c=-parseInt(this.layerContainerDiv.style.top),b=a.add(b,c);if(isNaN(b.x)||isNaN(b.y))b=null}return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){return this.getLayerPxFromViewPortPx(this.getPixelFromLonLat(a))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15883 CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15884 numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15885 destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15886 this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});if(a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),a.maxExtent&&!(a.maxExtent instanceof OpenLayers.Bounds)&&(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),a.minExtent&&!(a.minExtent instanceof
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15887 OpenLayers.Bounds)))a.minExtent=new OpenLayers.Bounds(a.minExtent);OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15888 this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&(this.inRange&&this.visibility)&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(){var a=this.visibility;this.isBaseLayer||(a=a&&this.inRange);this.display(a)},moveByPx:function(){},setMap:function(a){null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15889 this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15890 removeMap:function(){},getImageSize:function(){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15891 this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15892 b,c,d={},e=!0;a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15893 d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15894 this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15895 this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15896 this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&("number"!==typeof c&&null!=this.maxExtent)&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15897 typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){return this.getResolutionForZoom(this.map.getZoom())},getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize();return this.getZoomForResolution(Math.max(a.getWidth()/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15898 c.w,a.getHeight()/c.h),b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom)var b=Math.floor(a),c=Math.ceil(a),a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c]);else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15899 d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15900 (b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15901 null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter)var b=this.gutter*this.map.getResolution(),a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+b,a.top+b);this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15902 156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15903 y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15904 parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15905 OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15906 display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15907 arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectCenter()),g=this.getOLZoomFromMapObjectZoom(this.getMapObjectZoom());if(!d.equals(f)||e!=g)!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15908 e,c))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLLonLatFromMapObjectLonLat(this.getMapObjectLonLatFromMapObjectPixel(this.getMapObjectPixelFromOLPixel(a))));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(b=this.getOLPixelFromMapObjectPixel(this.getMapObjectPixelFromMapObjectLonLat(this.getMapObjectLonLatFromOLLonLat(a))));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15909 null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15910 a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15911 this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15912 arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){return null!=this.resolutions?OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments):this.getZoomForExtent(OpenLayers.Layer.prototype.getExtent.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15913 []))},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15914 type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15915 [a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15916 b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15917 this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a)}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15918 b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15919 a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15920 a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15921 OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){this.type||(this.type=G_NORMAL_MAP);var a,b,c,d=OpenLayers.Layer.Google.cache[this.map.id];if(d)a=d.mapObject,b=d.termsOfUse,c=d.poweredBy,++d.count;else{var d=this.map.viewPortDiv,e=document.createElement("div");e.id=this.map.id+"_GMap2Container";e.style.position="absolute";e.style.width="100%";e.style.height="100%";d.appendChild(e);try{a=new GMap2(e),b=e.lastChild,d.appendChild(b),b.style.zIndex=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15922 "1100",b.style.right="",b.style.bottom="",b.className="olLayerGoogleCopyright",c=e.lastChild,d.appendChild(c),c.style.zIndex="1100",c.style.right="",c.style.bottom="",c.className="olLayerGooglePoweredBy gmnoprint"}catch(f){throw f;}OpenLayers.Layer.Google.cache[this.map.id]={mapObject:a,termsOfUse:b,poweredBy:c,count:1}}this.mapObject=a;this.termsOfUse=b;this.poweredBy=c;-1===OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)&&this.mapObject.addMapType(this.type);"function"==typeof a.getDragObject?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15923 this.dragObject=a.getDragObject():this.dragPanMapObject=null;!1===this.isBaseLayer&&this.setGMapVisibility("none"!==this.div.style.display)},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded())this.mapObject.checkResize();else{if(!this._resized)var a=this,b=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(b);delete a._resized;a.mapObject.checkResize();a.moveTo(a.map.getCenter(),a.map.getZoom())});this._resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15924 if(b){var c=this.mapObject.getContainer();!0===a?(this.mapObject.setMapType(this.type),c.style.display="",this.termsOfUse.style.left="",this.termsOfUse.style.display="",this.poweredBy.style.display="",b.displayed=this.id):(b.displayed===this.id&&delete b.displayed,b.displayed||(c.style.display="none",this.termsOfUse.style.display="none",this.termsOfUse.style.left="-9999px",this.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getContainer()},getMapObjectBoundsFromOLBounds:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15925 null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new GLatLngBounds(new GLatLng(b.lat,b.lon),new GLatLng(a.lat,a.lon)));return b},setMapObjectCenter:function(a,b){this.mapObject.setCenter(a,b)},dragPanMapObject:function(a,b){this.dragObject.moveBy(new GSize(-a,b))},getMapObjectLonLatFromMapObjectPixel:function(a){return this.mapObject.fromContainerPixelToLatLng(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15926 getMapObjectPixelFromMapObjectLonLat:function(a){return this.mapObject.fromLatLngToContainerPixel(a)},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new GLatLng(c.lat,c.lon)):c=new GLatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new GPoint(a,b)}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15927 arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15928 b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15929 b)},createTextNode:function(a){"string"!==typeof a&&(a=""+a);return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else for(var a=a.getElementsByTagName("*"),e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)("*"==b||b==e.namespaceURI)&&d.push(e);return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15930 c);else for(var a=a.attributes,e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){for(var b=!0,a=a.firstChild;a;a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15931 a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){for(var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY,a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15932 c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){var b=b||{},c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15933 b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15934 b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15935 b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if((!b||b===(a.localName||a.nodeName.split(":").pop()))&&(!c||c===a.namespaceURI))break a;a=null;break a;case 3:if(/^\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15936 e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,b)}return c},getXMLDoc:function(){!OpenLayers.Format.XML.document&&!this.xmldom&&(document.implementation&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15937 document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15938 OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.WFST.DEFAULTS),b=OpenLayers.Format.WFST["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported WFST version: "+a.version;return new b(a)};OpenLayers.Format.WFST.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:!0,xy:!0,stateName:null,initialize:function(a){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15939 "wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},getSrsName:function(a,b){var c=b&&b.srsName;c||(c=a&&a.layer?a.layer.projection.getCode():this.srsName);return c},read:function(a,b){b=b||{};OpenLayers.Util.applyDefaults(b,{output:"features"});"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var c={};a&&this.readNode(a,c,!0);c.features&&"features"===b.output&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15940 (c=c.features);return c},readers:{wfs:{FeatureCollection:function(a,b){b.features=[];this.readChildNodes(a,b)}}},write:function(a,b){var c=this.writeNode("wfs:Transaction",{features:a,options:b}),d=this.schemaLocationAttr();d&&this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",d);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},writers:{wfs:{GetFeature:function(a){var b=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:a&&a.handle,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15941 outputFormat:a&&a.outputFormat,maxFeatures:a&&a.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(a)}});if("string"==typeof this.featureType)this.writeNode("Query",a,b);else for(var c=0,d=this.featureType.length;c<d;c++)a.featureType=this.featureType[c],this.writeNode("Query",a,b);return b},Transaction:function(a){var a=a||{},b=a.options||{},c=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:b.handle}}),d,e=a.features;if(e){!0===b.multi&&OpenLayers.Util.extend(this.geometryTypes,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15942 {"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.multiCurve?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":!0===this.multiSurface?"MultiSurface":"MultiPolygon"});var f,g,a=0;for(d=e.length;a<d;++a)g=e[a],(f=this.stateName[g.state])&&this.writeNode(f,{feature:g,options:b},c);!0===b.multi&&this.setGeometryTypes()}if(b.nativeElements){a=0;for(d=b.nativeElements.length;a<d;++a)this.writeNode("wfs:Native",b.nativeElements[a],c)}return c},Native:function(a){return this.createElementNSPlus("wfs:Native",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15943 {attributes:{vendorId:a.vendorId,safeToIgnore:a.safeToIgnore},value:a.value})},Insert:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Insert",{attributes:{handle:a&&a.handle}});this.srsName=this.getSrsName(b);this.writeNode("feature:_typeName",b,a);return a},Update:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Update",{attributes:{handle:a&&a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15944 this.featurePrefix,this.featureNS);var c=b.modified;if(null!==this.geometryName&&(!c||void 0!==c.geometry))this.srsName=this.getSrsName(b),this.writeNode("Property",{name:this.geometryName,value:b.geometry},a);for(var d in b.attributes)void 0!==b.attributes[d]&&(!c||!c.attributes||c.attributes&&void 0!==c.attributes[d])&&this.writeNode("Property",{name:d,value:b.attributes[d]},a);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a},Property:function(a){var b=this.createElementNSPlus("wfs:Property");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15945 this.writeNode("Name",a.name,b);null!==a.value&&this.writeNode("Value",a.value,b);return b},Name:function(a){return this.createElementNSPlus("wfs:Name",{value:a})},Value:function(a){var b;a instanceof OpenLayers.Geometry?(b=this.createElementNSPlus("wfs:Value"),a=this.writeNode("feature:_geometry",a).firstChild,b.appendChild(a)):b=this.createElementNSPlus("wfs:Value",{value:a});return b},Delete:function(a){var b=a.feature,a=a.options,a=this.createElementNSPlus("wfs:Delete",{attributes:{handle:a&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15946 a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a}}},schemaLocationAttr:function(a){var a=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},a),b=OpenLayers.Util.extend({},this.schemaLocations);a.schema&&(b[a.featurePrefix]=a.schema);var a=[],c,d;for(d in b)(c=this.namespaces[d])&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15947 a.push(c+" "+b[d]);return a.join(" ")||void 0},setFilterProperty:function(a){if(a.filters)for(var b=0,c=a.filters.length;b<c;++b)OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this,a.filters[b]);else a instanceof OpenLayers.Filter.Spatial&&!a.property&&(a.property=this.geometryName)},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15948 b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){var c={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(c)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){var c;a?(c=this.version,c||(c=a.getAttribute("version"),c||(c=this.defaultVersion))):c=b&&b.version||this.version||this.defaultVersion;return c},getParser:function(a){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15949 a||this.defaultVersion,b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\./g,"_")+b];if(!c)throw"Can't find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){this.parser=this.getParser(this.getVersion(null,b));var c=this.parser.write(a,b);return!1===this.stringifyOutput?c:OpenLayers.Format.XML.prototype.write.apply(this,[c])},read:function(a,b){"string"==typeof a&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15950 (a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);var d=this.parser.read(a,b);if(null!==this.errorProperty&&void 0===d[this.errorProperty]){var e=new OpenLayers.Format.OGCExceptionReport;d.error=e.read(a)}d.version=c;return d},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15951 (this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15952 this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15953 OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15954 null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15955 this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){var a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15956 b=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15957 a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15958 OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15959 hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15960 strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15961 this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length){f=!0;g=0;for(h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a)}0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15962 (b.label=""+b.label);return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0],a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),(!0===a.stroke||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15963 (!0===a.fill||!0===a.graphic)&&OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15964 return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15965 c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\$\{\w+\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15966 OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15967 OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(a){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},evaluate:function(a){for(var b=0,c=this.fids.length;b<c;b++)if((a.fid||a.id)==this.fids[b])return!0;return!1},clone:function(){var a=new OpenLayers.Filter.FeatureId;OpenLayers.Util.extend(a,this);a.fids=this.fids.slice();return a},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15968 c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1,a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15969 b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()==b.toUpperCase():a==b;break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=!this.matchCase&&"string"==typeof a&&"string"==typeof b?a.toUpperCase()!=b.toUpperCase():a!=b;break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15970 a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a)}return b},value2regex:function(a,b,c){if("."==a)throw Error("'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\"+(c?c:"!")+"(.|$)","g"),"\\$1");this.value=this.value.replace(RegExp("\\"+b,"g"),".");this.value=this.value.replace(RegExp("\\"+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15971 a,"g"),".*");this.value=this.value.replace(RegExp("\\\\.\\*","g"),"\\"+a);return this.value=this.value.replace(RegExp("\\\\\\.","g"),"\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\)?\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\)?\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\/g,"\\");return a=a.replace(/\.\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15972 OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){var b={};this.readers.ogc.Filter.apply(this,[a,b]);return b.filter},readers:{ogc:{_expression:function(a){for(var b="",c=a.firstChild;c;c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15973 c.nextSibling)switch(c.nodeType){case 1:a=this.readNode(c);a.property?b+="${"+a.property+"}":void 0!==a.value&&(b+=a.value);break;case 3:case 4:b+=c.nodeValue}return b},Filter:function(a,b){var c={fids:[],filters:[]};this.readChildNodes(a,c);0<c.fids.length?b.filter=new OpenLayers.Filter.FeatureId({fids:c.fids}):0<c.filters.length&&(b.filter=c.filters[0])},FeatureId:function(a,b){var c=a.getAttribute("fid");c&&b.fids.push(c)},And:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15974 this.readChildNodes(a,c);b.filters.push(c)},Or:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(a,c);b.filters.push(c)},Not:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThan:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThan:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15975 b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15976 PropertyIsBetween:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(a,c);b.filters.push(c)},Literal:function(a,b){b.value=OpenLayers.String.numericIf(this.getChildValue(a))},PropertyName:function(a,b){b.property=this.getChildValue(a)},LowerBoundary:function(a,b){b.lowerBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,a))},UpperBoundary:function(a,b){b.upperBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15977 a))},Intersects:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.INTERSECTS)},Within:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.WITHIN)},Contains:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.CONTAINS)},DWithin:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.DWITHIN)},Distance:function(a,b){b.distance=parseInt(this.getChildValue(a));b.distanceUnits=a.getAttribute("units")},Function:function(){}}},readSpatial:function(a,b,c){c=new OpenLayers.Filter.Spatial({type:c});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15978 this.readChildNodes(a,c);c.value=c.components[0];delete c.components;b.filters.push(c)},writeOgcExpression:function(a,b){if(a instanceof OpenLayers.Filter.Function){var c=this.writeNode("Function",a,b);b.appendChild(c)}else this.writeNode("Literal",a,b);return b},write:function(a){return this.writers.ogc.Filter.apply(this,[a])},writeFeatureIdNodes:function(a,b){for(var c=0,d=a.fids.length;c<d;++c)this.writeNode("FeatureId",a.fids[c],b)},writers:{ogc:{Filter:function(a){var b=this.createElementNSPlus("ogc:Filter");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15979 "FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},FeatureId:function(a){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:a}})},And:function(a){for(var b=this.createElementNSPlus("ogc:And"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Or:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15980 this.createElementNSPlus("ogc:Or"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],"FID"===c.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,c,b):this.writeNode(this.getFilterType(c),c,b);return b},Not:function(a){var b=this.createElementNSPlus("ogc:Not"),a=a.filters[0];"FID"===a.type?OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this,a,b):this.writeNode(this.getFilterType(a),a,b);return b},PropertyIsLessThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThan");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15981 this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLessThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15982 this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsBetween:function(a){var b=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",a,b);this.writeNode("LowerBoundary",a,b);this.writeNode("UpperBoundary",a,b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",{value:a.property})},Literal:function(a){return this.createElementNSPlus("ogc:Literal",{value:a})},LowerBoundary:function(a){var b=this.createElementNSPlus("ogc:LowerBoundary");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15983 this.writeOgcExpression(a.lowerBoundary,b);return b},UpperBoundary:function(a){var b=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",a.upperBoundary,b);return b},INTERSECTS:function(a){return this.writeSpatial(a,"Intersects")},WITHIN:function(a){return this.writeSpatial(a,"Within")},CONTAINS:function(a){return this.writeSpatial(a,"Contains")},DWITHIN:function(a){var b=this.writeSpatial(a,"DWithin");this.writeNode("Distance",a,b);return b},Distance:function(a){return this.createElementNSPlus("ogc:Distance",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15984 {attributes:{units:a.distanceUnits},value:a.distance})},Function:function(a){for(var b=this.createElementNSPlus("ogc:Function",{attributes:{name:a.name}}),a=a.params,c=0,d=a.length;c<d;c++)this.writeOgcExpression(a[c],b);return b}}},getFilterType:function(a){var b=this.filterMap[a.type];if(!b)throw"Filter writing not supported for rule type: "+a.type;return b},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15985 "<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike",BBOX:"BBOX",DWITHIN:"DWITHIN",WITHIN:"WITHIN",CONTAINS:"CONTAINS",INTERSECTS:"INTERSECTS",FID:"FeatureId"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15986 return this.bounds},calculateBounds:function(){},distanceTo:function(){},getVertices:function(){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15987 Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15988 OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point,c=c&&c.tolerance,e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,i=a.y2-a.y1,j=b.y2-b.y1,k=b.x2-b.x1,l=j*h-k*i,j=k*g-j*f,g=h*g-i*f;0==l?0==j&&0==g&&(e=!0):(f=j/l,l=g/l,0<=f&&(1>=f&&0<=l&&1>=l)&&(d?(h=a.x1+f*h,l=a.y1+f*i,e=new OpenLayers.Geometry.Point(h,l)):e=!0));if(c)if(e){if(d){a=[a,b];b=0;a:for(;2>b;++b){f=a[b];for(i=1;3>i;++i)if(h=f["x"+i],l=f["y"+i],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(l-e.y,2)),d<c){e.x=h;e.y=l;break a}}}}else{a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15989 [a,b];b=0;a:for(;2>b;++b){h=a[b];l=a[(b+1)%2];for(i=1;3>i;++i)if(f={x:h["x"+i],y:h["y"+i]},g=OpenLayers.Geometry.distanceToSegment(f,l),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}}}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,i=g-e,j=h-f,k=(i*(c-e)+j*(d-f))/(Math.pow(i,2)+Math.pow(j,2));0>=k||(1<=k?(e=g,f=h):(e+=k*i,f+=k*j));return{distance:Math.sqrt(Math.pow(e-c,2)+Math.pow(f-d,2)),x:e,y:f}};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15990 OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=!c?d:{x0:e,y0:f,x1:g,y1:h,distance:d}):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15991 a*(Math.PI/180),c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15992 a,b),this.bounds=null);return this},getVertices:function(){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15993 OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&(null!=a.bottom&&null!=a.right&&null!=a.top)&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15994 c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15995 this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15996 this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);!isNaN(h)&&(!isNaN(f.x)&&!isNaN(f.y))&&(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var i=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,i+=f.y*h;return new OpenLayers.Geometry.Point(e/d,i/d)},getGeodesicLength:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15997 0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,i=this.components.length;h<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15998 i&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(!a||!a.CLASS_NAME||this.CLASS_NAME!=a.CLASS_NAME)b=!1;else if(!OpenLayers.Util.isArray(a.components)||a.components.length!=this.components.length)b=!1;else for(var c=0,d=this.components.length;c<d;++c)if(!this.components[c].equals(a.components[c])){b=!1;break}return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
15999 b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16000 f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments(),a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16001 e,f,g,h,i,j,k,l=0,m=d.length;a:for(;l<m;++l){c=d[l];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,o=a.length;for(;n<o;++n){i=a[n];if(i.x1>f)break;if(!(i.x2<e)&&(j=i.y1,k=i.y2,!(Math.min(j,k)>Math.max(g,h))&&!(Math.max(j,k)<Math.min(g,h))&&OpenLayers.Geometry.segmentsIntersect(c,i))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16002 {x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],i=!1,j,k,l,m={point:!0,tolerance:d},n=null,o=0,p=f.length-2;o<=p;++o)if(d=f[o],g.push(d.clone()),j=f[o+1],k={x1:d.x,y1:d.y,x2:j.x,y2:j.y},k=OpenLayers.Geometry.segmentsIntersect(a,k,m),k instanceof OpenLayers.Geometry.Point&&((l=k.x===a.x1&&k.y===a.y1||k.x===a.x2&&k.y===a.y2||k.equals(d)||k.equals(j)?!0:!1)||c))k.equals(h[h.length-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16003 1])||h.push(k.clone()),!(0===o&&k.equals(d))&&!k.equals(j)&&(i=!0,k.equals(d)||g.push(k),e.push(new OpenLayers.Geometry.LineString(g)),g=[k.clone()]);i&&(g.push(j.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var q=a.x1<a.x2?1:-1,r=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return q*a.x-q*b.x||r*a.y-r*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var i=this.getVertices(),j,k,l,m,n,o=[];g=[];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16004 for(var p=0,q=i.length-2;p<=q;++p){j=i[p];k=i[p+1];l={x1:j.x,y1:j.y,x2:k.x,y2:k.y};h=h||[a];d&&o.push(j.clone());for(var r=0;r<h.length;++r)if(m=h[r].splitWithSegment(l,b))if(n=m.lines,0<n.length&&(n.unshift(r,1),Array.prototype.splice.apply(h,n),r+=n.length-2),d)for(var s=0,t=m.points.length;s<t;++s)n=m.points[s],n.equals(j)||(o.push(n),g.push(new OpenLayers.Geometry.LineString(o)),o=n.equals(k)?[]:[n.clone()])}d&&(0<g.length&&0<o.length)&&(o.push(k.clone()),g.push(new OpenLayers.Geometry.LineString(o)))}else c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16005 a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16006 h=a.x,i=a.y,j,k=0,l=g.length;k<l;++k)if(j=g[k],d=OpenLayers.Geometry.distanceToSegment(a,j),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(j.x2>h&&(i>j.y1&&i<j.y2||i<j.y1&&i>j.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:i}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),m,n,o=h.length,p={point:!0},k=0,l=g.length;a:for(;k<l;++k){i=g[k];j=i.x1;n=i.y1;for(var q=0;q<o;++q)if(d=h[q],m=OpenLayers.Geometry.segmentsIntersect(i,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16007 d,p)){f=0;e={distance:0,x0:m.x,y0:m.y,x1:m.x,y1:m.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:j,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:j,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&i&&(d=a.distanceTo(new OpenLayers.Geometry.Point(i.x2,i.y2),b),k=c?d.distance:d,k<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:k))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16008 if(3>b.length)return this;var c=function(a,b,d,i){for(var j=0,k=0,l=b,m;l<d;l++){m=a[b];var n=a[d],o=a[l],o=Math.abs(0.5*(m.x*n.y+n.x*o.y+o.x*m.y-n.x*m.y-o.x*n.y-m.x*o.y));m=Math.sqrt(Math.pow(m.x-n.x,2)+Math.pow(m.y-n.y,2));m=2*(o/m);m>j&&(j=m,k=l)}j>i&&k!=b&&(e.push(k),c(a,b,k,i),c(a,k,d,i))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16009 CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],split:function(a,b){for(var c=null,d=b&&b.mutual,e,f,g,h,i=[],j=[a],k=0,l=this.components.length;k<l;++k){f=this.components[k];g=!1;for(var m=0;m<j.length;++m)if(e=f.split(j[m],b)){if(d){g=e[0];for(var n=0,o=g.length;n<o;++n)0===n&&i.length?i[i.length-1].addComponent(g[n]):i.push(new OpenLayers.Geometry.MultiLineString([g[n]]));g=!0;e=e[1]}if(e.length){e.unshift(m,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16010 1);Array.prototype.splice.apply(j,e);break}}g||(i.length?i[i.length-1].addComponent(f.clone()):i=[new OpenLayers.Geometry.MultiLineString(f.clone())])}i&&1<i.length?g=!0:i=[];j&&1<j.length?h=!0:j=[];if(g||h)c=d?[i,j]:j;return c},splitWith:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h,i,j;if(a instanceof OpenLayers.Geometry.LineString){j=[];i=[a];for(var k=0,l=this.components.length;k<l;++k){g=!1;f=this.components[k];for(var m=0;m<i.length;++m)if(e=i[m].split(f,b)){d&&(g=e[0],g.length&&(g.unshift(m,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16011 1),Array.prototype.splice.apply(i,g),m+=g.length-2),e=e[1],0===e.length&&(e=[f.clone()]));g=0;for(var n=e.length;g<n;++g)0===g&&j.length?j[j.length-1].addComponent(e[g]):j.push(new OpenLayers.Geometry.MultiLineString([e[g]]));g=!0}g||(j.length?j[j.length-1].addComponent(f.clone()):j=[new OpenLayers.Geometry.MultiLineString([f.clone()])])}}else c=a.split(this);i&&1<i.length?h=!0:i=[];j&&1<j.length?g=!0:j=[];if(h||g)c=d?[i,j]:j;return c},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();if(null!=b||!a.equals(d))c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16012 arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16013 b);this.bounds=null}return this},getCentroid:function(){if(this.components&&2<this.components.length){for(var a=0,b=0,c=0;c<this.components.length-1;c++)var d=this.components[c],e=this.components[c+1],a=a+(d.x+e.x)*(d.x*e.y-e.x*d.y),b=b+(d.y+e.y)*(d.x*e.y-e.x*d.y);c=-1*this.getArea();return new OpenLayers.Geometry.Point(a/(6*c),b/(6*c))}return null},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16014 this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){for(var b=OpenLayers.Number.limitSigDigs,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16015 c=b(a.x,14),a=b(a.y,14),d=this.components.length-1,e,f,g,h,i,j=0,k=0;k<d;++k)if(e=this.components[k],g=b(e.x,14),e=b(e.y,14),f=this.components[k+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){j=-1;break}}else{i=b((a-f)*((h-g)/(f-e))+h,14);if(i==c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){j=-1;break}i<=c||g!=h&&(i<Math.min(g,h)||i>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++j}return-1==j?1:!!(j&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16016 a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16017 d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16018 this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b){c=0;for(d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}}else{c=0;for(d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);}if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16019 [a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:!0,xy:!0,initialize:function(a){this.regExes={trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g};OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16020 typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=this.getElementsByTagNameNS(a.documentElement,this.gmlns,this.featureName),b=[],c=0;c<a.length;c++){var d=this.parseFeature(a[c]);d&&b.push(d)}return b},parseFeature:function(a){for(var b="MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(" "),c,d,e,f=0;f<b.length;++f)if(c=b[f],d=this.getElementsByTagNameNS(a,this.gmlns,c),0<d.length){if(e=this.parseGeometry[c.toLowerCase()])e=e.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16021 [d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var g;c=this.getElementsByTagNameNS(a,this.gmlns,"Box");for(f=0;f<c.length;++f)b=c[f],d=this.parseGeometry.box.apply(this,[b]),b=b.parentNode,"boundedBy"===(b.localName||b.nodeName.split(":").pop())?g=d:e=d.toGeometry();var h;this.extractAttributes&&(h=this.parseAttributes(a));h=new OpenLayers.Feature.Vector(e,h);h.bounds=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16022 g;h.gml={featureType:a.firstChild.nodeName.split(":")[1],featureNS:a.firstChild.namespaceURI,featureNSPrefix:a.firstChild.prefix};for(var a=a.firstChild,i;a&&!(1==a.nodeType&&(i=a.getAttribute("fid")||a.getAttribute("id")));)a=a.nextSibling;h.fid=i;return h},parseGeometry:{point:function(a){var b,c;c=[];b=this.getElementsByTagNameNS(a,this.gmlns,"pos");0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));0==c.length&&(b=this.getElementsByTagNameNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16023 this.gmlns,"coordinates"),0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.removeSpace,""),c=c.split(",")));0==c.length&&(b=this.getElementsByTagNameNS(a,this.gmlns,"coord"),0<b.length&&(a=this.getElementsByTagNameNS(b[0],this.gmlns,"X"),b=this.getElementsByTagNameNS(b[0],this.gmlns,"Y"),0<a.length&&0<b.length&&(c=[a[0].firstChild.nodeValue,b[0].firstChild.nodeValue])));2==c.length&&(c[2]=null);return this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16024 c[0],c[2])},multipoint:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Point"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.point.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a,b){var c,d;d=[];var e=[];c=this.getElementsByTagNameNS(a,this.gmlns,"posList");if(0<c.length){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.split(this.regExes.splitSpace);var f=parseInt(c[0].getAttribute("dimension")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16025 g,h,i;for(c=0;c<d.length/f;++c)g=c*f,h=d[g],i=d[g+1],g=2==f?null:d[g+2],this.xy?e.push(new OpenLayers.Geometry.Point(h,i,g)):e.push(new OpenLayers.Geometry.Point(i,h,g))}if(0==d.length&&(c=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),0<c.length)){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.replace(this.regExes.trimComma,",");f=d.split(this.regExes.splitSpace);for(c=0;c<f.length;++c)d=f[c].split(","),2==d.length&&(d[2]=null),this.xy?e.push(new OpenLayers.Geometry.Point(d[0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16026 d[1],d[2])):e.push(new OpenLayers.Geometry.Point(d[1],d[0],d[2]))}d=null;0!=e.length&&(d=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e));return d},multilinestring:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LineString"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"LinearRing"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16027 b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d],!0]))&&b.push(c);return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){var a=this.getElementsByTagNameNS(a,this.gmlns,"Polygon"),b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.polygon.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPolygon(b)},envelope:function(a){var b=[],c,d,e=this.getElementsByTagNameNS(a,this.gmlns,"lowerCorner");if(0<e.length){c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16028 [];0<e.length&&(c=e[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var f=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}a=this.getElementsByTagNameNS(a,this.gmlns,"upperCorner");if(0<a.length){c=[];0<a.length&&(c=a[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var g=this.xy?new OpenLayers.Geometry.Point(c[0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16029 c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}f&&g&&(b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b=new OpenLayers.Geometry.LinearRing(b),d=new OpenLayers.Geometry.Polygon([b]));return d},box:function(a){var b=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),c=a=null;0<b.length&&(b=b[0].firstChild.nodeValue,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16030 b=b.split(" "),2==b.length&&(a=b[0].split(","),c=b[1].split(",")));if(null!==a&&null!==c)return new OpenLayers.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(c[0]),parseFloat(c[1]))}},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d,e;a;){if(1==a.nodeType){a=a.childNodes;for(c=0;c<a.length;++c)if(d=a[c],1==d.nodeType)if(e=d.childNodes,1==e.length){if(e=e[0],3==e.nodeType||4==e.nodeType)d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,e=e.nodeValue.replace(this.regExes.trimSpace,""),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16031 b[d]=e}else b[d.nodeName.split(":").pop()]=null;break}a=a.nextSibling}return b},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName),c=0;c<a.length;c++)b.appendChild(this.createFeatureXML(a[c]));return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.geometryName);c.appendChild(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16032 var b=this.createElementNS(this.gmlns,"gml:"+this.featureName),d=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.layerName);d.setAttribute("fid",a.fid||a.id);d.appendChild(c);for(var e in a.attributes){var c=this.createTextNode(a.attributes[e]),f=this.createElementNS(this.featureNS,this.featurePrefix+":"+e.substring(e.lastIndexOf(":")+1));f.appendChild(c);d.appendChild(f)}b.appendChild(d);return b},buildGeometryNode:function(a){this.externalProjection&&this.internalProjection&&(a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16033 a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME;return this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()].apply(this,[a])},buildGeometry:{point:function(a){var b=this.createElementNS(this.gmlns,"gml:Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPoint"),a=a.components,c,d,e=0;e<a.length;e++)c=this.createElementNS(this.gmlns,"gml:pointMember"),d=this.buildGeometry.point.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16034 [a[e]]),c.appendChild(d),b.appendChild(c);return b},linestring:function(a){var b=this.createElementNS(this.gmlns,"gml:LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiLineString"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:lineStringMember"),d=this.buildGeometry.linestring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},linearring:function(a){var b=this.createElementNS(this.gmlns,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16035 "gml:LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:Polygon"),a=a.components,c,d,e=0;e<a.length;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.gmlns,"gml:"+c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){for(var b=this.createElementNS(this.gmlns,"gml:MultiPolygon"),a=a.components,c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16036 "gml:polygonMember"),d=this.buildGeometry.polygon.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},bounds:function(a){var b=this.createElementNS(this.gmlns,"gml:Box");b.appendChild(this.buildCoordinatesNode(a));return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.gmlns,"gml:coordinates");b.setAttribute("decimal",".");b.setAttribute("cs",",");b.setAttribute("ts"," ");var c=[];if(a instanceof OpenLayers.Bounds)c.push(a.left+","+a.bottom),c.push(a.right+","+a.top);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16037 else for(var a=a.components?a.components:[a],d=0;d<a.length;d++)c.push(a[d].x+","+a[d].y);c=this.createTextNode(c.join(" "));b.appendChild(c);return b},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GML||(OpenLayers.Format.GML={});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16038 OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:!0,srsName:null,xy:!0,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,featureMember:/^(.*:)?featureMembers?$/},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16039 initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.setGeometryTypes();a&&a.featureNS&&this.setNamespace("feature",a.featureNS);this.singleFeatureType=!a||typeof a.featureType==="string"},read:function(a){typeof a=="string"&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));if(a&&a.nodeType==9)a=a.documentElement;var b=[];this.readNode(a,{features:b},true);if(b.length==0){var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember");if(c.length)for(var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16040 0,d=c.length;a<d;++a)this.readNode(c[a],{features:b},true);else{c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMembers");c.length&&this.readNode(c[0],{features:b},true)}}return b},readNode:function(a,b,c){if(c===true&&this.autoConfig===true){this.featureType=null;delete this.namespaceAlias[this.featureNS];delete this.namespaces.feature;this.featureNS=null}if(!this.featureNS&&!(a.prefix in this.namespaces)&&a.parentNode.namespaceURI==this.namespaces.gml&&this.regExes.featureMember.test(a.parentNode.nodeName)){this.featureType=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16041 a.nodeName.split(":").pop();this.setNamespace("feature",a.namespaceURI);this.featureNS=a.namespaceURI;this.autoConfig=true}return OpenLayers.Format.XML.prototype.readNode.apply(this,[a,b])},readers:{gml:{featureMember:function(a,b){this.readChildNodes(a,b)},featureMembers:function(a,b){this.readChildNodes(a,b)},name:function(a,b){b.name=this.getChildValue(a)},boundedBy:function(a,b){var c={};this.readChildNodes(a,c);if(c.components&&c.components.length>0)b.bounds=c.components[0]},Point:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16042 b){var c={points:[]};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(c.points[0])},coordinates:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace),d,e=c.length,f=Array(e),g=0;g<e;++g){d=c[g].split(",");f[g]=this.xy?new OpenLayers.Geometry.Point(d[0],d[1],d[2]):new OpenLayers.Geometry.Point(d[1],d[0],d[2])}b.points=f},coord:function(a,b){var c={};this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16043 c);if(!b.points)b.points=[];b.points.push(new OpenLayers.Geometry.Point(c.x,c.y,c.z))},X:function(a,b){b.x=this.getChildValue(a)},Y:function(a,b){b.y=this.getChildValue(a)},Z:function(a,b){b.z=this.getChildValue(a)},MultiPoint:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPoint(c.components)]},pointMember:function(a,b){this.readChildNodes(a,b)},LineString:function(a,b){var c={};this.readChildNodes(a,c);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.LineString(c.points))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16044 MultiLineString:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiLineString(c.components)]},lineStringMember:function(a,b){this.readChildNodes(a,b)},Polygon:function(a,b){var c={outer:null,inner:[]};this.readChildNodes(a,c);c.inner.unshift(c.outer);if(!b.components)b.components=[];b.components.push(new OpenLayers.Geometry.Polygon(c.inner))},LinearRing:function(a,b){var c={};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.LinearRing(c.points)]},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16045 MultiPolygon:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)]},polygonMember:function(a,b){this.readChildNodes(a,b)},GeometryCollection:function(a,b){var c={components:[]};this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.Collection(c.components)]},geometryMember:function(a,b){this.readChildNodes(a,b)}},feature:{"*":function(a,b){var c,d=a.localName||a.nodeName.split(":").pop();b.features?!this.singleFeatureType&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16046 OpenLayers.Util.indexOf(this.featureType,d)!==-1?c="_typeName":d===this.featureType&&(c="_typeName"):a.childNodes.length==0||a.childNodes.length==1&&a.firstChild.nodeType==3?this.extractAttributes&&(c="_attribute"):c="_geometry";c&&this.readers.feature[c].apply(this,[a,b])},_typeName:function(a,b){var c={components:[],attributes:{}};this.readChildNodes(a,c);if(c.name)c.attributes.name=c.name;var d=new OpenLayers.Feature.Vector(c.components[0],c.attributes);if(!this.singleFeatureType){d.type=a.nodeName.split(":").pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16047 d.namespace=a.namespaceURI}var e=a.getAttribute("fid")||this.getAttributeNS(a,this.namespaces.gml,"id");if(e)d.fid=e;this.internalProjection&&(this.externalProjection&&d.geometry)&&d.geometry.transform(this.externalProjection,this.internalProjection);if(c.bounds)d.bounds=c.bounds;b.features.push(d)},_geometry:function(a,b){if(!this.geometryName)this.geometryName=a.nodeName.split(":").pop();this.readChildNodes(a,b)},_attribute:function(a,b){var c=a.localName||a.nodeName.split(":").pop(),d=this.getChildValue(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16048 b.attributes[c]=d}},wfs:{FeatureCollection:function(a,b){this.readChildNodes(a,b)}}},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:{featureMember:function(a){var b=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",a,b);return b},MultiPoint:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16049 this.createElementNSPlus("gml:MultiPoint"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("pointMember",a[c],b);return b},pointMember:function(a){var b=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",a,b);return b},MultiLineString:function(a){for(var b=this.createElementNSPlus("gml:MultiLineString"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("lineStringMember",a[c],b);return b},lineStringMember:function(a){var b=this.createElementNSPlus("gml:lineStringMember");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16050 this.writeNode("LineString",a,b);return b},MultiPolygon:function(a){for(var b=this.createElementNSPlus("gml:MultiPolygon"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("polygonMember",a[c],b);return b},polygonMember:function(a){var b=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",a,b);return b},GeometryCollection:function(a){for(var b=this.createElementNSPlus("gml:GeometryCollection"),c=0,d=a.components.length;c<d;++c)this.writeNode("geometryMember",a.components[c],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16051 b);return b},geometryMember:function(a){var b=this.createElementNSPlus("gml:geometryMember"),a=this.writeNode("feature:_geometry",a);b.appendChild(a.firstChild);return b}},feature:{_typeName:function(a){var b=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:a.fid}});a.geometry&&this.writeNode("feature:_geometry",a.geometry,b);for(var c in a.attributes){var d=a.attributes[c];d!=null&&this.writeNode("feature:_attribute",{name:c,value:d},b)}return b},_geometry:function(a){this.externalProjection&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16052 this.internalProjection&&(a=a.clone().transform(this.internalProjection,this.externalProjection));var b=this.createElementNSPlus("feature:"+this.geometryName),a=this.writeNode("gml:"+this.geometryTypes[a.CLASS_NAME],a,b);this.srsName&&a.setAttribute("srsName",this.srsName);return b},_attribute:function(a){return this.createElementNSPlus("feature:"+a.name,{value:a.value})}},wfs:{FeatureCollection:function(a){for(var b=this.createElementNSPlus("wfs:FeatureCollection"),c=0,d=a.length;c<d;++c)this.writeNode("gml:featureMember",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16053 a[c],b);return b}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:!1,multiCurve:!0,surface:!1,multiSurface:!0,initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a,b){this.readChildNodes(a,b)},Curve:function(a,b){var c={points:[]};this.readChildNodes(a,c);b.components||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16054 (b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},segments:function(a,b){this.readChildNodes(a,b)},LineStringSegment:function(a,b){var c={};this.readChildNodes(a,c);c.points&&Array.prototype.push.apply(b.points,c.points)},pos:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),c=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2]);b.points=[c]},posList:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16055 b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),d=parseInt(a.getAttribute("dimension"))||2,e,f,g,h=Array(c.length/d),i=0,j=c.length;i<j;i+=d)e=c[i],f=c[i+1],g=2==d?void 0:c[i+2],h[i/d]=this.xy?new OpenLayers.Geometry.Point(e,f,g):new OpenLayers.Geometry.Point(f,e,g);b.points=h},Surface:function(a,b){this.readChildNodes(a,b)},patches:function(a,b){this.readChildNodes(a,b)},PolygonPatch:function(a,b){this.readers.gml.Polygon.apply(this,[a,b])},exterior:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16056 b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},interior:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},MultiCurve:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiLineString(c.components)])},curveMember:function(a,b){this.readChildNodes(a,b)},MultiSurface:function(a,b){var c={components:[]};this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)])},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16057 surfaceMember:function(a,b){this.readChildNodes(a,b)},surfaceMembers:function(a,b){this.readChildNodes(a,b)},pointMembers:function(a,b){this.readChildNodes(a,b)},lineStringMembers:function(a,b){this.readChildNodes(a,b)},polygonMembers:function(a,b){this.readChildNodes(a,b)},geometryMembers:function(a,b){this.readChildNodes(a,b)},Envelope:function(a,b){var c={points:Array(2)};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16058 d.y,c.x,c.y))},lowerCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[0]=c.points[0]},upperCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[1]=c.points[0]}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode("gml:"+(OpenLayers.Util.isArray(a)?"featureMembers":"featureMember"),a);this.setAttributeNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16059 this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a){for(var b=this.createElementNSPlus("gml:featureMembers"),c=0,d=a.length;c<d;++c)this.writeNode("feature:_typeName",a[c],b);return b},Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("pos",a,b);return b},pos:function(a){return this.createElementNSPlus("gml:pos",{value:this.xy?a.x+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16060 " "+a.y:a.y+" "+a.x})},LineString:function(a){var b=this.createElementNSPlus("gml:LineString");this.writeNode("posList",a.components,b);return b},Curve:function(a){var b=this.createElementNSPlus("gml:Curve");this.writeNode("segments",a,b);return b},segments:function(a){var b=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",a,b);return b},LineStringSegment:function(a){var b=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",a.components,b);return b},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16061 posList:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+" "+d.y:d.y+" "+d.x;return this.createElementNSPlus("gml:posList",{value:c.join(" ")})},Surface:function(a){var b=this.createElementNSPlus("gml:Surface");this.writeNode("patches",a,b);return b},patches:function(a){var b=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",a,b);return b},PolygonPatch:function(a){var b=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16062 this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},exterior:function(a){var b=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",a,b);return b},interior:function(a){var b=this.createElementNSPlus("gml:interior");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16063 this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",a.components,b);return b},MultiCurve:function(a){for(var b=this.createElementNSPlus("gml:MultiCurve"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("curveMember",a[c],b);return b},curveMember:function(a){var b=this.createElementNSPlus("gml:curveMember");this.curve?this.writeNode("Curve",a,b):this.writeNode("LineString",a,b);return b},MultiSurface:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16064 this.createElementNSPlus("gml:MultiSurface"),a=a.components||[a],c=0,d=a.length;c<d;++c)this.writeNode("surfaceMember",a[c],b);return b},surfaceMember:function(a){var b=this.createElementNSPlus("gml:surfaceMember");this.surface?this.writeNode("Surface",a,b):this.writeNode("Polygon",a,b);return b},Envelope:function(a){var b=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",a,b);this.writeNode("upperCorner",a,b);this.srsName&&b.setAttribute("srsName",this.srsName);return b},lowerCorner:function(a){return this.createElementNSPlus("gml:lowerCorner",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16065 {value:this.xy?a.left+" "+a.bottom:a.bottom+" "+a.left})},upperCorner:function(a){return this.createElementNSPlus("gml:upperCorner",{value:this.xy?a.right+" "+a.top:a.top+" "+a.right})}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":!0===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16066 this.curve?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":!1===this.multiCurve?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":!0===this.surface?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":!1===this.multiSurface?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16067 c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escapeChar");c.value2regex(d,e,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16068 f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,feature:OpenLayers.Format.GML.v3.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16069 {attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:a.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Envelope",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16070 a.value);a.projection&&c.setAttribute("srsName",a.projection);b.appendChild(c);return b},SortBy:function(a){for(var b=this.createElementNSPlus("ogc:SortBy"),c=0,d=a.length;c<d;c++)this.writeNode("ogc:SortProperty",a[c],b);return b},SortProperty:function(a){var b=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",a,b);this.writeNode("ogc:SortOrder","DESC"==a.order?"DESC":"ASC",b);return b},SortOrder:function(a){return this.createElementNSPlus("ogc:SortOrder",{value:a})}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16071 OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature},writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Envelope",a.value);a.projection&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16072 d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a){var b=this.version;b||((a=a.getAttribute("xmlns:ows"))&&"1.1"===a.substring(a.lastIndexOf("/")+1)&&(b="1.1.0"),b||(b=this.defaultVersion));return b},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){var c=this.getChildValue(a);b.texts.push(c)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16073 ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16074 this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16075 b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16076 b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16077 b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");b.parameters[c]={};this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16078 b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16079 [a,b])},LowerCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.left=c[0];b.bottom=c[1]},UpperCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.right=c[0];b.top=c[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16080 Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a){var b=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,b);this.writeNode("ows:UpperCorner",a,b);return b},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",{value:a.bounds.right+" "+a.bounds.top})},Identifier:function(a){return this.createElementNSPlus("ows:Identifier",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16081 {value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.success=!1;b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("language"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16082 CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16083 b){b.numberOfFeatures=parseInt(a.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(this,arguments)},TransactionResponse:function(a,b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},TransactionSummary:function(a,b){b.success=!0},InsertResults:function(a,b){this.readChildNodes(a,b)},Feature:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16084 feature:OpenLayers.Format.GML.v3.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows},writers:{wfs:OpenLayers.Util.applyDefaults({GetFeature:function(a){var b=OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(this,arguments);a&&this.setAttributes(b,{resultType:a.resultType,startIndex:a.startIndex,count:a.count});return b},Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16085 featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType,srsName:a.srsName}});a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<d;b++)this.writeNode("wfs:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this,a.filter),this.writeNode("ogc:Filter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16086 a.filter,c));return c},PropertyName:function(a){return this.createElementNSPlus("wfs:PropertyName",{value:a.property})}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16087 update:function(){},"delete":function(){},commit:function(){},abort:function(){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16088 OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||!("function"==typeof JSON.parse&&"function"==typeof JSON.stringify))}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))&&(c=eval("("+a+")"),"function"===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16089 typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16090 return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16091 [a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16092 "]");return c.join("")},string:function(a){var b={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(a)?'"'+a.replace(/([\x00-\x1f\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+'"':'"'+a+'"'},number:function(a){return isFinite(a)?""+a:"null"},"boolean":function(a){return""+a},date:function(a){function b(a){return 10>a?"0"+a:a}return'"'+a.getFullYear()+"-"+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16093 b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+'"'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:!1,read:function(a,b,c){var b=b?b:"FeatureCollection",d=null,e=null;if(e="string"==typeof a?OpenLayers.Format.JSON.prototype.read.apply(this,[a,c]):a)if("string"!=typeof e.type)OpenLayers.Console.error("Bad GeoJSON - no type: "+a);else{if(this.isValidType(e,b))switch(b){case "Geometry":try{d=this.parseGeometry(e)}catch(f){OpenLayers.Console.error(f)}break;case "Feature":try{d=this.parseFeature(e),d.type="Feature"}catch(g){OpenLayers.Console.error(g)}break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16094 case "FeatureCollection":switch(d=[],e.type){case "Feature":try{d.push(this.parseFeature(e))}catch(h){d=null,OpenLayers.Console.error(h)}break;case "FeatureCollection":a=0;for(b=e.features.length;a<b;++a)try{d.push(this.parseFeature(e.features[a]))}catch(i){d=null,OpenLayers.Console.error(i)}break;default:try{var j=this.parseGeometry(e);d.push(new OpenLayers.Feature.Vector(j))}catch(k){d=null,OpenLayers.Console.error(k)}}}}else OpenLayers.Console.error("Bad JSON: "+a);return d},isValidType:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16095 b){var c=!1;switch(b){case "Geometry":-1==OpenLayers.Util.indexOf("Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(" "),a.type)?OpenLayers.Console.error("Unsupported geometry type: "+a.type):c=!0;break;case "FeatureCollection":c=!0;break;default:a.type==b?c=!0:OpenLayers.Console.error("Cannot convert types from "+a.type+" to "+b)}return c},parseFeature:function(a){var b,c,d;c=a.properties?a.properties:{};d=a.geometry&&a.geometry.bbox||a.bbox;try{b=this.parseGeometry(a.geometry)}catch(e){throw e;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16096 }b=new OpenLayers.Feature.Vector(b,c);d&&(b.bounds=OpenLayers.Bounds.fromArray(d));a.id&&(b.fid=a.id);return b},parseGeometry:function(a){if(null==a)return null;var b,c=!1;if("GeometryCollection"==a.type){if(!OpenLayers.Util.isArray(a.geometries))throw"GeometryCollection must have geometries array: "+a;b=a.geometries.length;for(var c=Array(b),d=0;d<b;++d)c[d]=this.parseGeometry.apply(this,[a.geometries[d]]);b=new OpenLayers.Geometry.Collection(c);c=!0}else{if(!OpenLayers.Util.isArray(a.coordinates))throw"Geometry must have coordinates array: "+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16097 a;if(!this.parseCoords[a.type.toLowerCase()])throw"Unsupported geometry type: "+a.type;try{b=this.parseCoords[a.type.toLowerCase()].apply(this,[a.coordinates])}catch(e){throw e;}}this.internalProjection&&(this.externalProjection&&!c)&&b.transform(this.externalProjection,this.internalProjection);return b},parseCoords:{point:function(a){if(!1==this.ignoreExtraDims&&2!=a.length)throw"Only 2D points are supported: "+a;return new OpenLayers.Geometry.Point(a[0],a[1])},multipoint:function(a){for(var b=[],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16098 c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.LineString(b)},multilinestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.linestring.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiLineString(b)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16099 polygon:function(a){for(var b=[],c,d,e=0,f=a.length;e<f;++e){try{d=this.parseCoords.linestring.apply(this,[a[e]])}catch(g){throw g;}c=new OpenLayers.Geometry.LinearRing(d.components);b.push(c)}return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.polygon.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPolygon(b)},box:function(a){if(2!=a.length)throw"GeoJSON box coordinates must have 2 elements";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16100 return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(a[0][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[0][1])])])}},write:function(a,b){var c={type:null};if(OpenLayers.Util.isArray(a)){c.type="FeatureCollection";var d=a.length;c.features=Array(d);for(var e=0;e<d;++e){var f=a[e];if(!f instanceof OpenLayers.Feature.Vector)throw"FeatureCollection only supports collections of features: "+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16101 f;c.features[e]=this.extract.feature.apply(this,[f])}}else 0==a.CLASS_NAME.indexOf("OpenLayers.Geometry")?c=this.extract.geometry.apply(this,[a]):a instanceof OpenLayers.Feature.Vector&&(c=this.extract.feature.apply(this,[a]),a.layer&&a.layer.projection&&(c.crs=this.createCRSObject(a)));return OpenLayers.Format.JSON.prototype.write.apply(this,[c,b])},createCRSObject:function(a){var a=a.layer.projection.toString(),b={};a.match(/epsg:/i)&&(a=parseInt(a.substring(a.indexOf(":")+1)),b=4326==a?{type:"name",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16102 properties:{name:"urn:ogc:def:crs:OGC:1.3:CRS84"}}:{type:"name",properties:{name:"EPSG:"+a}});return b},extract:{feature:function(a){var b=this.extract.geometry.apply(this,[a.geometry]),b={type:"Feature",properties:a.attributes,geometry:b};null!=a.fid&&(b.id=a.fid);return b},geometry:function(a){if(null==a)return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME.split(".")[2],a=this.extract[b.toLowerCase()].apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16103 [a]);return"Collection"==b?{type:"GeometryCollection",geometries:a}:{type:b,coordinates:a}},point:function(a){return[a.x,a.y]},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16104 [a.components[c]]));return b},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},multipolygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.polygon.apply(this,[a.components[c]]));return b},collection:function(a){for(var b=a.components.length,c=Array(b),d=0;d<b;++d)c[d]=this.extract.geometry.apply(this,[a.components[d]]);return c}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,callbackTemplate:"OpenLayers.Protocol.Script.registry.${id}",callbackKey:"callback",callbackPrefix:"",scope:null,format:null,pendingRequests:null,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);this.format||(this.format=new OpenLayers.Format.GeoJSON);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16105 new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(a,d){return b.write(a,d)}}},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.applyDefaults(a,this.options);a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.createRequest(a.url,a.params,OpenLayers.Function.bind(function(c){b.data=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16106 c;this.handleRead(b,a)},this));b.priv=c;return b},createRequest:function(a,b,c){var c=OpenLayers.Protocol.Script.register(c),d=OpenLayers.String.format(this.callbackTemplate,{id:c}),b=OpenLayers.Util.extend({},b);b[this.callbackKey]=this.callbackPrefix+d;a=OpenLayers.Util.urlAppend(a,OpenLayers.Util.getParameterString(b));b=document.createElement("script");b.type="text/javascript";b.src=a;b.id="OpenLayers_Protocol_Script_"+c;this.pendingRequests[b.id]=b;document.getElementsByTagName("head")[0].appendChild(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16107 return b},destroyRequest:function(a){OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());delete this.pendingRequests[a.id];a.parentNode&&a.parentNode.removeChild(a)},handleRead:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){b.callback&&(a.data?(a.features=this.parseFeatures(a.data),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,this.destroyRequest(a.priv),b.callback.call(b.scope,a))},parseFeatures:function(a){return this.format.read(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16108 abort:function(a){if(a)this.destroyRequest(a.priv);else for(var b in this.pendingRequests)this.destroyRequest(this.pendingRequests[b])},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var a=OpenLayers.Protocol.Script,b=0;a.registry={};a.register=function(c){var d="c"+ ++b;a.registry[d]=function(){c.apply(this,arguments)};return d};a.unregister=function(b){delete a.registry[b]}})();OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:!0,defaultControl:null,saveState:!1,allowDepress:!1,activeState:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.controls=[];this.activeState={}},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var a,b=this.controls.length-1;0<=b;b--)a=this.controls[b],a.events&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16109 a.events.un({activate:this.iconOn,deactivate:this.iconOff}),a.panel_div=null;this.activeState=null},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var a,b=0,c=this.controls.length;b<c;b++)a=this.controls[b],(a===this.defaultControl||this.saveState&&this.activeState[a.id])&&a.activate();!0===this.saveState&&(this.defaultControl=null);this.redraw();return!0}return!1},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){for(var a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16110 b=0,c=this.controls.length;b<c;b++)a=this.controls[b],this.activeState[a.id]=a.deactivate();this.redraw();return!0}return!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick);this.addControlsToMap(this.controls);return this.div},redraw:function(){for(var a=this.div.childNodes.length-1;0<=a;a--)this.div.removeChild(this.div.childNodes[a]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16111 this.div.innerHTML="";if(this.active)for(var a=0,b=this.controls.length;a<b;a++)this.div.appendChild(this.controls[a].panel_div)},activateControl:function(a){if(!this.active)return!1;if(a.type==OpenLayers.Control.TYPE_BUTTON)a.trigger();else if(a.type==OpenLayers.Control.TYPE_TOGGLE)a.active?a.deactivate():a.activate();else if(this.allowDepress&&a.active)a.deactivate();else{for(var b,c=0,d=this.controls.length;c<d;c++)b=this.controls[c],b!=a&&(b.type===OpenLayers.Control.TYPE_TOOL||null==b.type)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16112 b.deactivate();a.activate()}},addControls:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.controls=this.controls.concat(a);for(var b=0,c=a.length;b<c;b++){var d=a[b],e=this.createControlMarkup(d);OpenLayers.Element.addClass(e,d.displayClass+"ItemInactive");OpenLayers.Element.addClass(e,"olButton");""!=d.title&&!e.title&&(e.title=d.title);d.panel_div=e}this.map&&(this.addControlsToMap(a),this.redraw())},createControlMarkup:function(){return document.createElement("div")},addControlsToMap:function(a){for(var b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16113 c=0,d=a.length;c<d;c++)b=a[c],!0===b.autoActivate?(b.autoActivate=!1,this.map.addControl(b),b.autoActivate=!0):(this.map.addControl(b),b.deactivate()),b.events.on({activate:this.iconOn,deactivate:this.iconOff})},iconOn:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\b("+this.displayClass+"Item)Inactive\\b"),"$1Active")},iconOff:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\b("+this.displayClass+"Item)Active\\b"),"$1Inactive")},onButtonClick:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16114 this.controls,a=a.buttonElement,c=b.length-1;0<=c;--c)if(b[c].panel_div===a){this.activateControl(b[c]);break}},getControlsBy:function(a,b){var c="function"==typeof b.test;return OpenLayers.Array.filter(this.controls,function(d){return d[a]==b||c&&b.test(d[a])})},getControlsByName:function(a){return this.getControlsBy("name",a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn()},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut()},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map&&this.map.zoomToMaxExtent()},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.ZoomIn,new OpenLayers.Control.ZoomToMaxExtent,new OpenLayers.Control.ZoomOut])},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16115 return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=a.charCodeAt(d)*this.URL_HASH_FACTOR,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16116 c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16117 !1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&!a&&(b=!1!==this.events.triggerEvent("beforedraw"));return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16118 {inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine)var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution(),a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c});this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,blankImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16119 this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position="absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16120 this.layer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent="reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.positionTile(),this.renderTile()):this.unload();return a},renderTile:function(){this.layer.div.appendChild(this.getTile());if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16121 this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds);a.left=this.position.x+"%";a.top=this.position.y+"%";a.width=b.w+"%";a.height=b.h+"%"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){OpenLayers.Event.stopObservingElement(a);var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16122 "olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=document.createElement("img");this.imgDiv.className="olTileImage";this.imgDiv.galleryImg="no";var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16123 100*this.layer.opacity+")");a.position="absolute";this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},initImage:function(){this.events.triggerEvent(this._loadEvent);var a=this.getImage();if(this.url&&a.getAttribute("src")==this.url)this.onImageLoad();else{var b=OpenLayers.Function.bind(function(){OpenLayers.Event.stopObservingElement(a);OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16124 this));OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this));this.imageReloadAttempts=0;this.setImgSrc(this.url)},this);a.getAttribute("src")==this.blankImageUrl?b():(OpenLayers.Event.observe(a,"load",b),OpenLayers.Event.observe(a,"error",b),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),a.src=this.blankImageUrl)}},setImgSrc:function(a){var b=this.imgDiv;b.style.visibility="hidden";b.style.opacity=0;a&&(this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16125 this.crossOriginKeyword):b.removeAttribute("crossorigin")),b.src=a)},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;OpenLayers.Event.stopObservingElement(a);a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=!1;this.canvasContext=null;this.events.triggerEvent("loadend");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16126 if(7>parseFloat(navigator.appVersion.split("MSIE")[1])&&this.layer&&this.layer.div){var b=document.createElement("span");b.style.display="none";var c=this.layer.div;c.appendChild(b);window.setTimeout(function(){b.parentNode===c&&b.parentNode.removeChild(b)},0)}!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a.src+"', sizingMethod='scale')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16127 OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:null,numLoadingTiles:0,tileLoadingDelay:85,serverResolutions:null,moveTimerId:null,deferMoveGriddedTiles:null,tileQueueId:null,tileQueue:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16128 className:null,initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this.tileQueue=[];null===this.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);null===this.className&&(this.className=this.singleTile?"olLayerGridSingleTile":"olLayerGrid");OpenLayers.Animation.isNative||(this.deferMoveGriddedTiles=OpenLayers.Function.bind(function(){this.moveGriddedTiles(true);this.moveTimerId=null},this))},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16129 a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(){null!==this.moveTimerId&&(window.clearTimeout(this.moveTimerId),this.moveTimerId=null);this.clearTileQueue();null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null)},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){this.clearTileQueue();if(this.grid){for(var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16130 0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);this.grid=[];this.gridResolution=null}},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.tileQueue=[];a.tileQueueId=null;a.loading=!1;a.moveTimerId=null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16131 return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution(),g=this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&this.removeBackBuffer(),(!b||"resize"===this.transitionEffect)&&this.applyBackBuffer(g),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16132 this.map.getMaxExtent()}),f!==g?(a=this.map.calculateBounds(null,g),d&&this.transformDiv(g/f)):(this.div.style.width="100%",this.div.style.height="100%",this.div.style.left="0%",this.div.style.top="0%"),d)?(b&&"resize"===this.transitionEffect&&this.applyBackBuffer(g),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution(),a=this.tileSize.w,g=this.tileSize.h,h=this.grid[0][0].bounds,i=h.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16133 h=h.top;if(c<i&&this.map.baseLayer.wrapDateLine)var j=this.map.getMaxExtent().getWidth(),k=Math.ceil((i-c)/j),c=c+j*k;c=(c-i)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);i=Math.floor(d);0<=i&&i<e&&(e=this.grid[i][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-i)*g)})}return b},queueTileDraw:function(a){a=a.object;~OpenLayers.Util.indexOf(this.tileQueue,a)||this.tileQueue.push(a);this.tileQueueId||(this.tileQueueId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.drawTileFromQueue,this),null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16134 this.div));return!1},drawTileFromQueue:function(){0===this.tileQueue.length?this.clearTileQueue():this.tileQueue.shift().draw(!0)},clearTileQueue:function(){OpenLayers.Animation.stop(this.tileQueueId);this.tileQueueId=null;this.tileQueue=[]},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){a=a||this.map.getResolution();if(this.serverResolutions&&-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var b,c;for(b=this.serverResolutions.length-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16135 1;0<=b;b--)if(c=this.serverResolutions[b],c>a){a=c;break}if(-1===b)throw"no appropriate resolution in serverResolutions";}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},transformDiv:function(a){this.div.style.width=100*a+"%";this.div.style.height=100*a+"%";var b=this.map.getSize(),c=parseInt(this.map.layerContainerDiv.style.left,10),d=(parseInt(this.map.layerContainerDiv.style.top,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16136 10)-b.h/2)*(a-1);this.div.style.left=(c-b.w/2)*(a-1)+"%";this.div.style.top=d+"%"},getResolutionScale:function(){return parseInt(this.div.style.width,10)/100},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=this.createBackBuffer();if(!b)return;this.div.insertBefore(b,this.div.firstChild);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}var c=b.style,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16137 d=this.backBufferResolution/a;c.width=100*d+"%";c.height=100*d+"%";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=parseInt(this.map.layerContainerDiv.style.left,10);d=parseInt(this.map.layerContainerDiv.style.top,10);b.style.left=Math.round(a.x-c)+"%";b.style.top=Math.round(a.y-d)+"%"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";a.style.width="100%";a.style.height=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16138 "100%";for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d].createBackBuffer();f&&(f.style.top=b*this.tileSize.h+"%",f.style.left=d*this.tileSize.w+"%",a.appendChild(f))}}return a},removeBackBuffer:function(){this.backBuffer&&(this.div.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(){this.singleTile||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16139 this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio),a.w=parseInt(a.w*this.ratio));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.clearTileQueue();var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16140 a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio,b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2),c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16141 a.left-b.lon,f=Math.floor(e/d)-this.buffer,e=-(e/d-f)*this.tileSize.w,f=b.lon+f*d,a=a.top-(b.lat+c),g=Math.ceil(a/c)+this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:f,tileoffsetlat:b.lat+g*c,tileoffsetx:e,tileoffsety:-(g-a/c)*this.tileSize.h}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},initGriddedTiles:function(a){this.clearTileQueue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16142 var b=this.map.getSize(),c=Math.ceil(b.h/this.tileSize.h)+Math.max(1,2*this.buffer),b=Math.ceil(b.w/this.tileSize.w)+Math.max(1,2*this.buffer),d=this.getTileOrigin(),e=this.getServerResolution(),d=this.calculateGridLayout(a,d,e),e=Math.round(d.tileoffsetx),f=Math.round(d.tileoffsety),g=d.tileoffsetlon,h=d.tileoffsetlat,i=d.tilelon,j=d.tilelat,k=e,l=g,m=0,n=parseInt(this.map.layerContainerDiv.style.left),o=parseInt(this.map.layerContainerDiv.style.top),d=[],p=this.map.getCenter();do{var q=this.grid[m++];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16143 q||(q=[],this.grid.push(q));var g=l,e=k,r=0;do{var s=new OpenLayers.Bounds(g,h,g+i,h+j),t=e,t=t-n,u=f,u=u-o,u=new OpenLayers.Pixel(t,u);(t=q[r++])?t.moveTo(s,u,!1):(t=this.addTile(s,u),this.addTileMonitoringHooks(t),q.push(t));s=s.getCenterLonLat();d.push({tile:t,distance:Math.pow(s.lon-p.lon,2)+Math.pow(s.lat-p.lat,2)});g+=i;e+=this.tileSize.w}while(g<=a.right+i*this.buffer||r<b);h-=j;f+=this.tileSize.h}while(h>=a.bottom-j*this.buffer||m<c);this.removeExcessTiles(m,r);this.gridResolution=this.getServerResolution();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16144 d.sort(function(a,b){return a.distance-b.distance});a=0;for(c=d.length;a<c;++a)d[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);c.events.register("beforedraw",this,this.queueTileDraw);return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16145 a.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded",{tile:a});0===this.tileQueue.length&&0===this.numLoadingTiles&&(this.loading=!1,this.events.triggerEvent("loadend"),this.backBuffer&&(this.backBufferTimerId=window.setTimeout(OpenLayers.Function.bind(this.removeBackBuffer,this),this.removeBackBufferDelay)))};a.onLoadError=function(){this.events.triggerEvent("tileerror",{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16146 scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(a){if(!a&&!OpenLayers.Animation.isNative)null!=this.moveTimerId&&window.clearTimeout(this.moveTimerId),this.moveTimerId=window.setTimeout(this.deferMoveGriddedTiles,this.tileLoadingDelay);else for(var a=this.buffer||1,b=this.getResolutionScale();;){var c=this.grid[0][0].position.x*b+parseInt(this.div.style.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16147 10)+parseInt(this.map.layerContainerDiv.style.left),d=this.grid[0][0].position.y*b+parseInt(this.div.style.top,10)+parseInt(this.map.layerContainerDiv.style.top),e=this.tileSize.w*b,f=this.tileSize.h*b;if(c>-e*(a-1))this.shiftColumn(!0);else if(c<-e*a)this.shiftColumn(!1);else if(d>-f*(a-1))this.shiftRow(!0);else if(d<-f*a)this.shiftRow(!1);else break}},shiftRow:function(a){for(var b=this.grid,c=b[a?0:this.grid.length-1],d=this.getServerResolution(),e=a?-this.tileSize.h:this.tileSize.h,d=d*-e,f=a?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16148 b.pop():b.shift(),g=0,h=c.length;g<h;g++){var i=c[g],j=i.bounds.clone(),i=i.position.clone();j.bottom+=d;j.top+=d;i.y+=e;f[g].moveTo(j,i)}a?b.unshift(f):b.push(f)},shiftColumn:function(a){for(var b=a?-this.tileSize.w:this.tileSize.w,c=this.getServerResolution()*b,d=0,e=this.grid.length;d<e;d++){var f=this.grid[d],g=f[a?0:f.length-1],h=g.bounds.clone(),g=g.position.clone();h.left+=c;h.right+=c;g.x+=b;var i=a?this.grid[d].pop():this.grid[d].shift();i.moveTo(h,g);a?f.unshift(i):f.push(i)}},removeExcessTiles:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16149 b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a),a=b.left+d*Math.floor((e.lon-b.left)/d),b=b.bottom+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16150 c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:"antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(" "),request:null,response:null,initialize:function(a){this.request=new OpenLayers.Format.ArcXML.Request;this.response=new OpenLayers.Format.ArcXML.Response;if(a)if("feature"==a.requesttype){this.request.get_image=null;var b=this.request.get_feature.query;this.addCoordSys(b.featurecoordsys,a.featureCoordSys);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16151 this.addCoordSys(b.filtercoordsys,a.filterCoordSys);a.polygon?(b.isspatial=!0,b.spatialfilter.polygon=a.polygon):a.envelope&&(b.isspatial=!0,b.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0},this.parseEnvelope(b.spatialfilter.envelope,a.envelope))}else"image"==a.requesttype?(this.request.get_feature=null,b=this.request.get_image.properties,this.parseEnvelope(b.envelope,a.envelope),this.addLayers(b.layerlist,a.layers),this.addImageSize(b.imagesize,a.tileSize),this.addCoordSys(b.featurecoordsys,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16152 a.featureCoordSys),this.addCoordSys(b.filtercoordsys,a.filterCoordSys)):this.request=null;OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},parseEnvelope:function(a,b){b&&4==b.length&&(a.minx=b[0],a.miny=b[1],a.maxx=b[2],a.maxy=b[3])},addLayers:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},addImageSize:function(a,b){null!==b&&(a.width=b.w,a.height=b.h,a.printwidth=b.w,a.printheight=b.h)},addCoordSys:function(a,b){"string"==typeof b?(a.id=parseInt(b),a.string=b):"object"==typeof b&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16153 null!==b.proj&&(a.id=b.proj.srsProjNumber,a.string=b.proj.srsCode)},iserror:function(a){var b=null;a?(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]),a=a.documentElement.getElementsByTagName("ERROR"),b=null!==a&&0<a.length):b=""!==this.response.error;return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null;a&&a.documentElement&&(b="ARCXML"==a.documentElement.nodeName?a.documentElement:a.documentElement.getElementsByTagName("ARCXML")[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16154 if(!b||"parsererror"===b.firstChild.nodeName){var c,d;try{c=a.firstChild.nodeValue,d=a.firstChild.childNodes[1].firstChild.nodeValue}catch(e){}throw{message:"Error parsing the ArcXML request",error:c,source:d};}return this.parseResponse(b)},write:function(a){a||(a=this.request);var b=this.createElementNS("","ARCXML");b.setAttribute("version","1.1");var c=this.createElementNS("","REQUEST");if(null!=a.get_image){var d=this.createElementNS("","GET_IMAGE");c.appendChild(d);var e=this.createElementNS("",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16155 "PROPERTIES");d.appendChild(e);a=a.get_image.properties;null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),e.appendChild(d),0===a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id));null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),e.appendChild(d),0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id));null!=a.envelope&&(d=this.createElementNS("",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16156 "ENVELOPE"),e.appendChild(d),d.setAttribute("minx",a.envelope.minx),d.setAttribute("miny",a.envelope.miny),d.setAttribute("maxx",a.envelope.maxx),d.setAttribute("maxy",a.envelope.maxy));d=this.createElementNS("","IMAGESIZE");e.appendChild(d);d.setAttribute("height",a.imagesize.height);d.setAttribute("width",a.imagesize.width);if(a.imagesize.height!=a.imagesize.printheight||a.imagesize.width!=a.imagesize.printwidth)d.setAttribute("printheight",a.imagesize.printheight),d.setArrtibute("printwidth",a.imagesize.printwidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16157 null!=a.background&&(d=this.createElementNS("","BACKGROUND"),e.appendChild(d),d.setAttribute("color",a.background.color.r+","+a.background.color.g+","+a.background.color.b),null!==a.background.transcolor&&d.setAttribute("transcolor",a.background.transcolor.r+","+a.background.transcolor.g+","+a.background.transcolor.b));if(null!=a.layerlist&&0<a.layerlist.length){d=this.createElementNS("","LAYERLIST");e.appendChild(d);for(e=0;e<a.layerlist.length;e++){var f=this.createElementNS("","LAYERDEF");d.appendChild(f);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16158 f.setAttribute("id",a.layerlist[e].id);f.setAttribute("visible",a.layerlist[e].visible);if("object"==typeof a.layerlist[e].query){var g=a.layerlist[e].query;if(0>g.where.length)continue;var h=null,h="boolean"==typeof g.spatialfilter&&g.spatialfilter?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY");h.setAttribute("where",g.where);"number"==typeof g.accuracy&&0<g.accuracy&&h.setAttribute("accuracy",g.accuracy);"number"==typeof g.featurelimit&&2E3>g.featurelimit&&h.setAttribute("featurelimit",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16159 g.featurelimit);"string"==typeof g.subfields&&"#ALL#"!=g.subfields&&h.setAttribute("subfields",g.subfields);"string"==typeof g.joinexpression&&0<g.joinexpression.length&&h.setAttribute("joinexpression",g.joinexpression);"string"==typeof g.jointables&&0<g.jointables.length&&h.setAttribute("jointables",g.jointables);f.appendChild(h)}"object"==typeof a.layerlist[e].renderer&&this.addRenderer(f,a.layerlist[e].renderer)}}}else if(null!=a.get_feature&&(d=this.createElementNS("","GET_FEATURES"),d.setAttribute("outputmode",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16160 "newxml"),d.setAttribute("checkesc","true"),a.get_feature.geometry?d.setAttribute("geometry",a.get_feature.geometry):d.setAttribute("geometry","false"),a.get_feature.compact&&d.setAttribute("compact",a.get_feature.compact),"number"==a.get_feature.featurelimit&&d.setAttribute("featurelimit",a.get_feature.featurelimit),d.setAttribute("globalenvelope","true"),c.appendChild(d),null!=a.get_feature.layer&&0<a.get_feature.layer.length&&(e=this.createElementNS("","LAYER"),e.setAttribute("id",a.get_feature.layer),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16161 d.appendChild(e)),a=a.get_feature.query,null!=a))e=null,e=a.isspatial?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY"),d.appendChild(e),"number"==typeof a.accuracy&&e.setAttribute("accuracy",a.accuracy),null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),0==a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id),e.appendChild(d)),null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16162 0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id),e.appendChild(d)),0<a.buffer&&(d=this.createElementNS("","BUFFER"),d.setAttribute("distance",a.buffer),e.appendChild(d)),a.isspatial&&(d=this.createElementNS("","SPATIALFILTER"),d.setAttribute("relation",a.spatialfilter.relation),e.appendChild(d),a.spatialfilter.envelope?(f=this.createElementNS("","ENVELOPE"),f.setAttribute("minx",a.spatialfilter.envelope.minx),f.setAttribute("miny",a.spatialfilter.envelope.miny),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16163 f.setAttribute("maxx",a.spatialfilter.envelope.maxx),f.setAttribute("maxy",a.spatialfilter.envelope.maxy),d.appendChild(f)):"object"==typeof a.spatialfilter.polygon&&d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),null!=a.where&&0<a.where.length&&e.setAttribute("where",a.where);b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},addGroupRenderer:function(a,b){var c=this.createElementNS("","GROUPRENDERER");a.appendChild(c);for(var d=0;d<b.length;d++)this.addRenderer(c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16164 b[d])},addRenderer:function(a,b){if(OpenLayers.Util.isArray(b))this.addGroupRenderer(a,b);else{var c=this.createElementNS("",b.type.toUpperCase()+"RENDERER");a.appendChild(c);"VALUEMAPRENDERER"==c.tagName?this.addValueMapRenderer(c,b):"VALUEMAPLABELRENDERER"==c.tagName?this.addValueMapLabelRenderer(c,b):"SIMPLELABELRENDERER"==c.tagName?this.addSimpleLabelRenderer(c,b):"SCALEDEPENDENTRENDERER"==c.tagName&&this.addScaleDependentRenderer(c,b)}},addScaleDependentRenderer:function(a,b){("string"==typeof b.lower||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16165 "number"==typeof b.lower)&&a.setAttribute("lower",b.lower);("string"==typeof b.upper||"number"==typeof b.upper)&&a.setAttribute("upper",b.upper);this.addRenderer(a,b.renderer)},addValueMapLabelRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);a.setAttribute("labelfield",b.labelfield);if("object"==typeof b.exacts)for(var c=0,d=b.exacts.length;c<d;c++){var e=b.exacts[c],f=this.createElementNS("","EXACT");"string"==typeof e.value&&f.setAttribute("value",e.value);"string"==typeof e.label&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16166 f.setAttribute("label",e.label);"string"==typeof e.method&&f.setAttribute("method",e.method);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"text"==e.symbol.type&&(g=this.createElementNS("","TEXTSYMBOL"));if(null!=g){for(var h=this.fontStyleKeys,i=0,j=h.length;i<j;i++){var k=h[i];e.symbol[k]&&g.setAttribute(k,e.symbol[k])}f.appendChild(g)}}}},addValueMapRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);if("object"==typeof b.ranges)for(var c=0,d=b.ranges.length;c<d;c++){var e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16167 b.ranges[c],f=this.createElementNS("","RANGE");f.setAttribute("lower",e.lower);f.setAttribute("upper",e.upper);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"simplepolygon"==e.symbol.type&&(g=this.createElementNS("","SIMPLEPOLYGONSYMBOL"));null!=g&&("string"==typeof e.symbol.boundarycolor&&g.setAttribute("boundarycolor",e.symbol.boundarycolor),"string"==typeof e.symbol.fillcolor&&g.setAttribute("fillcolor",e.symbol.fillcolor),"number"==typeof e.symbol.filltransparency&&g.setAttribute("filltransparency",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16168 e.symbol.filltransparency),f.appendChild(g))}}else if("object"==typeof b.exacts){c=0;for(d=b.exacts.length;c<d;c++)e=b.exacts[c],f=this.createElementNS("","EXACT"),"string"==typeof e.value&&f.setAttribute("value",e.value),"string"==typeof e.label&&f.setAttribute("label",e.label),"string"==typeof e.method&&f.setAttribute("method",e.method),a.appendChild(f),"object"==typeof e.symbol&&(g=null,"simplemarker"==e.symbol.type&&(g=this.createElementNS("","SIMPLEMARKERSYMBOL")),null!=g&&("string"==typeof e.symbol.antialiasing&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16169 g.setAttribute("antialiasing",e.symbol.antialiasing),"string"==typeof e.symbol.color&&g.setAttribute("color",e.symbol.color),"string"==typeof e.symbol.outline&&g.setAttribute("outline",e.symbol.outline),"string"==typeof e.symbol.overlap&&g.setAttribute("overlap",e.symbol.overlap),"string"==typeof e.symbol.shadow&&g.setAttribute("shadow",e.symbol.shadow),"number"==typeof e.symbol.transparency&&g.setAttribute("transparency",e.symbol.transparency),"string"==typeof e.symbol.usecentroid&&g.setAttribute("usecentroid",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16170 e.symbol.usecentroid),"number"==typeof e.symbol.width&&g.setAttribute("width",e.symbol.width),f.appendChild(g)))}},addSimpleLabelRenderer:function(a,b){a.setAttribute("field",b.field);for(var c="featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(" "),d=0,e=c.length;d<e;d++){var f=c[d];b[f]&&a.setAttribute(f,b[f])}if("text"==b.symbol.type){var g=b.symbol,h=this.createElementNS("","TEXTSYMBOL");a.appendChild(h);c=this.fontStyleKeys;d=0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16171 for(e=c.length;d<e;d++)f=c[d],g[f]&&h.setAttribute(f,b[f])}},writePolygonGeometry:function(a){if(!(a instanceof OpenLayers.Geometry.Polygon))throw{message:"Cannot write polygon geometry to ArcXML with an "+a.CLASS_NAME+" object.",geometry:a};for(var b=this.createElementNS("","POLYGON"),c=0,d=a.components.length;c<d;c++){for(var e=a.components[c],f=this.createElementNS("","RING"),g=0,h=e.components.length;g<h;g++){var i=e.components[g],j=this.createElementNS("","POINT");j.setAttribute("x",i.x);j.setAttribute("y",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16172 i.y);f.appendChild(j)}b.appendChild(f)}return b},parseResponse:function(a){"string"==typeof a&&(a=(new OpenLayers.Format.XML).read(a));var b=new OpenLayers.Format.ArcXML.Response,c=a.getElementsByTagName("ERROR");if(null!=c&&0<c.length)b.error=this.getChildValue(c,"Unknown error.");else{c=a.getElementsByTagName("RESPONSE");if(null==c||0==c.length)return b.error="No RESPONSE tag found in ArcXML response.",b;var d=c[0].firstChild.nodeName;"#text"==d&&(d=c[0].firstChild.nextSibling.nodeName);if("IMAGE"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16173 d)c=a.getElementsByTagName("ENVELOPE"),a=a.getElementsByTagName("OUTPUT"),null==c||0==c.length?b.error="No ENVELOPE tag found in ArcXML response.":null==a||0==a.length?b.error="No OUTPUT tag found in ArcXML response.":(c=this.parseAttributes(c[0]),d=this.parseAttributes(a[0]),b.image="string"==typeof d.type?{envelope:c,output:{type:d.type,data:this.getChildValue(a[0])}}:{envelope:c,output:d});else if("FEATURES"==d){if(a=c[0].getElementsByTagName("FEATURES"),c=a[0].getElementsByTagName("FEATURECOUNT"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16174 b.features.featurecount=c[0].getAttribute("count"),0<b.features.featurecount){c=a[0].getElementsByTagName("ENVELOPE");b.features.envelope=this.parseAttributes(c[0],"number");a=a[0].getElementsByTagName("FEATURE");for(c=0;c<a.length;c++){for(var d=new OpenLayers.Feature.Vector,e=a[c].getElementsByTagName("FIELD"),f=0;f<e.length;f++){var g=e[f].getAttribute("name"),h=e[f].getAttribute("value");d.attributes[g]=h}e=a[c].getElementsByTagName("POLYGON");if(0<e.length){e=e[0].getElementsByTagName("RING");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16175 f=[];for(g=0;g<e.length;g++){h=[];h.push(this.parsePointGeometry(e[g]));for(var i=e[g].getElementsByTagName("HOLE"),j=0;j<i.length;j++)h.push(this.parsePointGeometry(i[j]));f.push(new OpenLayers.Geometry.Polygon(h))}d.geometry=1==f.length?f[0]:new OpenLayers.Geometry.MultiPolygon(f)}b.features.feature.push(d)}}}else b.error="Unidentified response type."}return b},parseAttributes:function(a,b){for(var c={},d=0;d<a.attributes.length;d++)c[a.attributes[d].nodeName]="number"==b?parseFloat(a.attributes[d].nodeValue):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16176 a.attributes[d].nodeValue;return c},parsePointGeometry:function(a){var b=[],c=a.getElementsByTagName("COORDS");if(0<c.length){a=this.getChildValue(c[0]);a=a.split(/;/);for(c=0;c<a.length;c++){var d=a[c].split(/ /);b.push(new OpenLayers.Geometry.Point(d[0],d[1]))}}else if(a=a.getElementsByTagName("POINT"),0<a.length)for(c=0;c<a.length;c++)b.push(new OpenLayers.Geometry.Point(parseFloat(a[c].getAttribute("x")),parseFloat(a[c].getAttribute("y"))));return new OpenLayers.Geometry.LinearRing(b)},CLASS_NAME:"OpenLayers.Format.ArcXML"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16177 OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{get_image:{properties:{background:null,draw:!0,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:!1},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16178 legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:!1,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]})},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16179 OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(){return OpenLayers.Util.extend(this,{image:{envelope:null,output:""},features:{featurecount:0,envelope:null,feature:[]},error:""})},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.ProxyHost="";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16180 OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==e.hostname,d=d[4],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16181 e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||(b?a="function"==typeof b?b(a):b+encodeURIComponent(a):OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:a}));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost}),a=OpenLayers.Util.applyDefaults(a,b),b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]="XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16182 e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16183 d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16184 if(b.status&&(200>b.status||300<=b.status))this.events.triggerEvent("failure",a),f&&f(b)},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16185 a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}};OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:""},featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:!0,name:"ArcIMS",isBaseLayer:!0,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:!0,async:!0,name:"ArcIMS"},initialize:function(a,b,c){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:c.serviceName},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16186 this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(c,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,this.params,c]);if(this.transparent&&(this.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.format))this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";null===this.options.layers&&(this.options.layers=[])},getURL:function(a){var b="",a=this.adjustBounds(a),a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16187 envelope:a.toArray(),tileSize:this.tileSize})),a=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:a.write(),async:!1});if(null!=a){b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;b=this.getUrlOrImage((new OpenLayers.Format.ArcXML).read(b).image.output)}return b},getURLasync:function(a,b,c){a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:a.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16188 async:!0,data:a.write(),callback:function(a){var e=a.responseXML;if(!e||!e.documentElement)e=a.responseText;a=(new OpenLayers.Format.ArcXML).read(e);b.call(c,this.getUrlOrImage(a.image.output))},scope:this})},getUrlOrImage:function(a){var b="";a.url?b=a.url:a.data&&(b="data:image/"+a.type+";base64,"+a.data);return b},setLayerQuery:function(a,b){for(var c=0;c<this.options.layers.length;c++)if(a==this.options.layers[c].id){this.options.layers[c].query=b;return}this.options.layers.push({id:a,visible:!0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16189 query:b})},getFeatureInfo:function(a,b,c){var d=c.buffer||1,e=c.callback||function(){},f=c.scope||window,g={};OpenLayers.Util.extend(g,this.options);g.requesttype="feature";a instanceof OpenLayers.LonLat?(g.polygon=null,g.envelope=[a.lon-d,a.lat-d,a.lon+d,a.lat+d]):a instanceof OpenLayers.Geometry.Polygon&&(g.envelope=null,g.polygon=a);var h=new OpenLayers.Format.ArcXML(g);OpenLayers.Util.extend(h.request.get_feature,c);h.request.get_feature.layer=b.id;"number"==typeof b.query.accuracy?h.request.get_feature.query.accuracy=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16190 b.query.accuracy:(a=this.map.getCenter(),c=this.map.getViewPortPxFromLonLat(a),c.x++,c=this.map.getLonLatFromPixel(c),h.request.get_feature.query.accuracy=c.lon-a.lon);h.request.get_feature.query.where=b.query.where;h.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({CustomService:"Query"}),data:h.write(),callback:function(a){a=h.parseResponse(a.responseText);h.iserror()?e.call(f,null):e.call(f,a.features)}})},clone:function(a){null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16191 a&&(a=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16192 !0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16193 {attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(a){a=this.writeNode("wcs:GetCoverage",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16194 a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wcs:{GetCoverage:function(a){var b=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:a.version||this.VERSION,service:"WCS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wcs:DomainSubset",a.domainSubset,b);this.writeNode("wcs:Output",a.output,b);return b},DomainSubset:function(a){var b=this.createElementNSPlus("wcs:DomainSubset",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16195 {});this.writeNode("ows:BoundingBox",a.boundingBox,b);a.temporalSubset&&this.writeNode("wcs:TemporalSubset",a.temporalSubset,b);return b},TemporalSubset:function(a){for(var b=this.createElementNSPlus("wcs:TemporalSubset",{}),c=0,d=a.timePeriods.length;c<d;++c)this.writeNode("wcs:TimePeriod",a.timePeriods[c],b);return b},TimePeriod:function(a){var b=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",a.begin,b);this.writeNode("wcs:EndPosition",a.end,b);a.resolution&&this.writeNode("wcs:TimeResolution",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16196 a.resolution,b);return b},BeginPosition:function(a){return this.createElementNSPlus("wcs:BeginPosition",{value:a})},EndPosition:function(a){return this.createElementNSPlus("wcs:EndPosition",{value:a})},TimeResolution:function(a){return this.createElementNSPlus("wcs:TimeResolution",{value:a})},Output:function(a){var b=this.createElementNSPlus("wcs:Output",{attributes:{format:a.format,store:a.store}});a.gridCRS&&this.writeNode("wcs:GridCRS",a.gridCRS,b);return b},GridCRS:function(a){var b=this.createElementNSPlus("wcs:GridCRS",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16197 {});this.writeNode("wcs:GridBaseCRS",a.baseCRS,b);a.type&&this.writeNode("wcs:GridType",a.type,b);a.origin&&this.writeNode("wcs:GridOrigin",a.origin,b);this.writeNode("wcs:GridOffsets",a.offsets,b);a.CS&&this.writeNode("wcs:GridCS",a.CS,b);return b},GridBaseCRS:function(a){return this.createElementNSPlus("wcs:GridBaseCRS",{value:a})},GridOrigin:function(a){return this.createElementNSPlus("wcs:GridOrigin",{value:a})},GridType:function(a){return this.createElementNSPlus("wcs:GridType",{value:a})},GridOffsets:function(a){return this.createElementNSPlus("wcs:GridOffsets",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16198 {value:a})},GridCS:function(a){return this.createElementNSPlus("wcs:GridCS",{value:a})}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16199 schemaLocationAttr:function(){},write:function(a){var b;window.ActiveXObject?this.xmldom=b=new ActiveXObject("Microsoft.XMLDOM"):b=document.implementation.createDocument("","",null);a=this.writeNode("wps:Execute",a,b);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wps:{Execute:function(a){var b=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:"WPS"}});this.writeNode("ows:Identifier",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16200 a.identifier,b);this.writeNode("wps:DataInputs",a.dataInputs,b);this.writeNode("wps:ResponseForm",a.responseForm,b);return b},ResponseForm:function(a){var b=this.createElementNSPlus("wps:ResponseForm",{});a.rawDataOutput&&this.writeNode("wps:RawDataOutput",a.rawDataOutput,b);a.responseDocument&&this.writeNode("wps:ResponseDocument",a.responseDocument,b);return b},ResponseDocument:function(a){var b=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:a.storeExecuteResponse,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16201 lineage:a.lineage,status:a.status}});a.output&&this.writeNode("wps:Output",a.output,b);return b},Output:function(a){var b=this.createElementNSPlus("wps:Output",{attributes:{asReference:a.asReference}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("ows:Title",a.title,b);this.writeNode("ows:Abstract",a["abstract"],b);return b},RawDataOutput:function(a){var b=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:a.mimeType}});this.writeNode("ows:Identifier",a.identifier,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16202 b);return b},DataInputs:function(a){for(var b=this.createElementNSPlus("wps:DataInputs",{}),c=0,d=a.length;c<d;++c)this.writeNode("wps:Input",a[c],b);return b},Input:function(a){var b=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",a.identifier,b);a.title&&this.writeNode("ows:Title",a.title,b);a.data&&this.writeNode("wps:Data",a.data,b);a.reference&&this.writeNode("wps:Reference",a.reference,b);return b},Data:function(a){var b=this.createElementNSPlus("wps:Data",{});a.literalData?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16203 this.writeNode("wps:LiteralData",a.literalData,b):a.complexData&&this.writeNode("wps:ComplexData",a.complexData,b);return b},LiteralData:function(a){return this.createElementNSPlus("wps:LiteralData",{attributes:{uom:a.uom},value:a.value})},ComplexData:function(a){var b=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}}),c=a.value;"string"===typeof c?b.appendChild(this.getXMLDoc().createCDATASection(a.value)):b.appendChild(c);return b},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16204 Reference:function(a){var b=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:a.mimeType,"xlink:href":a.href,method:a.method,encoding:a.encoding,schema:a.schema}});a.body&&this.writeNode("wps:Body",a.body,b);return b},Body:function(a){var b=this.createElementNSPlus("wps:Body",{});a.wcs?this.writeNode("wcs:GetCoverage",a.wcs,b):a.wfs?(this.featureType=a.wfs.featureType,this.version=a.wfs.version,this.writeNode("wfs:GetFeature",a.wfs,b)):this.writeNode("wps:Execute",a,b);return b}},wcs:OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16205 wfs:OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16206 setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16207 c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16208 OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16209 break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,zoomWorldIcon:!1,panIcons:!0,forceFixedZoomLevel:!1,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({changebaselayer:this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart},setMap:function(a){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16210 arguments);this.map.events.register("changebaselayer",this,this.redraw)},redraw:function(){null!=this.div&&(this.removeButtons(),this._removeZoomBar());this.draw()},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position.clone();this.buttons=[];var b={w:18,h:18};if(this.panIcons){var c=new OpenLayers.Pixel(a.x+b.w/2,a.y),d=b.w;this.zoomWorldIcon&&(c=new OpenLayers.Pixel(a.x+b.w,a.y));this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16211 "west-mini.png",a,b);this.zoomWorldIcon&&(this._addButton("zoomworld","zoom-world-mini.png",a.add(b.w,0),b),d*=2);this._addButton("panright","east-mini.png",a.add(d,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);c=this._addZoomBar(c.add(0,4*b.h+5));this._addButton("zoomout","zoom-minus-mini.png",c,b)}else this._addButton("zoomin","zoom-plus-mini.png",a,b),c=this._addZoomBar(a.add(0,b.h)),this._addButton("zoomout",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16212 "zoom-minus-mini.png",c,b),this.zoomWorldIcon&&(c=c.add(0,b.h+3),this._addButton("zoomworld","zoom-world-mini.png",c,b));return this.div},_addZoomBar:function(a){var b=OpenLayers.Util.getImageLocation("slider.png"),c=this.id+"_"+this.map.id,d=this.map.getNumZoomLevels()-1-this.map.getZoom(),d=OpenLayers.Util.createAlphaImageDiv(c,a.add(-1,d*this.zoomStopHeight),{w:20,h:9},b,"absolute");d.style.cursor="move";this.slider=d;this.sliderEvents=new OpenLayers.Events(this,d,null,!0,{includeXY:!0});this.sliderEvents.on({touchstart:this.zoomBarDown,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16213 touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});var e={w:this.zoomStopWidth,h:this.zoomStopHeight*this.map.getNumZoomLevels()},b=OpenLayers.Util.getImageLocation("zoombar.png"),c=null;OpenLayers.Util.alphaHack()?(c=this.id+"_"+this.map.id,c=OpenLayers.Util.createAlphaImageDiv(c,a,{w:e.w,h:this.zoomStopHeight},b,"absolute",null,"crop"),c.style.height=e.h+"px"):c=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16214 this.map.id,a,e,b);c.style.cursor="pointer";c.className="olButton";this.zoombarDiv=c;this.div.appendChild(c);this.startTop=parseInt(c.style.top);this.div.appendChild(d);this.map.events.register("zoomend",this,this.moveZoomBar);return a=a.add(0,this.zoomStopHeight*this.map.getNumZoomLevels())},_removeZoomBar:function(){this.sliderEvents.un({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});this.sliderEvents.destroy();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16215 this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar)},onButtonClick:function(a){OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this,arguments);if(a.buttonElement===this.zoombarDiv){var b=a.buttonXY.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom)b=Math.floor(b);b=this.map.getNumZoomLevels()-1-b;b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16216 1);this.map.zoomTo(b)}},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},zoomBarDown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.map.events.on({touchmove:this.passEventToSlider,mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this}),this.mouseDragStart=a.xy.clone(),this.zoomStart=a.xy.clone(),this.div.style.cursor="move",this.zoombarDiv.offsets=null,OpenLayers.Event.stop(a)},zoomBarDrag:function(a){if(null!=this.mouseDragStart){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16217 this.mouseDragStart.y-a.xy.y,c=OpenLayers.Util.pagePosition(this.zoombarDiv);0<a.clientY-c[1]&&a.clientY-c[1]<parseInt(this.zoombarDiv.style.height)-2&&(this.slider.style.top=parseInt(this.slider.style.top)-b+"px",this.mouseDragStart=a.xy.clone());this.deltaY=this.zoomStart.y-a.xy.y;OpenLayers.Event.stop(a)}},zoomBarUp:function(a){if((OpenLayers.Event.isLeftClick(a)||"touchend"===a.type)&&this.mouseDragStart){this.div.style.cursor="";this.map.events.un({touchmove:this.passEventToSlider,mouseup:this.passEventToSlider,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16218 mousemove:this.passEventToSlider,scope:this});var b=this.map.zoom;!this.forceFixedZoomLevel&&this.map.fractionalZoom?(b+=this.deltaY/this.zoomStopHeight,b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1)):(b+=this.deltaY/this.zoomStopHeight,b=Math.max(Math.round(b),0));this.map.zoomTo(b);this.zoomStart=this.mouseDragStart=null;this.deltaY=0;OpenLayers.Event.stop(a)}},moveZoomBar:function(){this.slider.style.top=(this.map.getNumZoomLevels()-1-this.map.getZoom())*this.zoomStopHeight+this.startTop+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16219 1+"px"},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",errorProperty:"service",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wfs:"http://www.opengis.net/wfs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wfs:{WFS_Capabilities:function(a,b){this.readChildNodes(a,b)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16220 FeatureTypeList:function(a,b){b.featureTypeList={featureTypes:[]};this.readChildNodes(a,b.featureTypeList)},FeatureType:function(a,b){var c={};this.readChildNodes(a,c);b.featureTypes.push(c)},Name:function(a,b){var c=this.getChildValue(a);c&&(c=c.split(":"),b.name=c.pop(),0<c.length&&(b.featureNS=this.lookupNamespaceURI(a,c[0])))},Title:function(a,b){var c=this.getChildValue(a);c&&(b.title=c)},Abstract:function(a,b){var c=this.getChildValue(a);c&&(b["abstract"]=c)}}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},readers:{wfs:OpenLayers.Util.applyDefaults({DefaultSRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs),ows:OpenLayers.Format.OWSCommon.v1.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!0,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(a,b,c,d,e){this.url=b;this.maxExtent=this.extent=c;this.size=d;OpenLayers.Layer.prototype.initialize.apply(this,[a,e]);this.aspectRatio=this.extent.getHeight()/this.size.h/(this.extent.getWidth()/this.size.w)},destroy:function(){this.tile&&(this.removeTileMonitoringHooks(this.tile),this.tile.destroy(),this.tile=null);OpenLayers.Layer.prototype.destroy.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16221 arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions()));return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setMap:function(a){null==this.options.maxResolution&&(this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w);OpenLayers.Layer.prototype.setMap.apply(this,arguments)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=null==this.tile;if(b||d){this.setTileSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16222 var e=this.map.getLayerPxFromLonLat({lon:this.extent.left,lat:this.extent.top});d?(this.tile=new OpenLayers.Tile.Image(this,e,this.extent,null,this.tileSize),this.addTileMonitoringHooks(this.tile)):(this.tile.size=this.tileSize.clone(),this.tile.position=e.clone());this.tile.draw()}},setTileSize:function(){var a=this.extent.getWidth()/this.map.getResolution(),b=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(a,b)},addTileMonitoringHooks:function(a){a.onLoadStart=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16223 function(){this.events.triggerEvent("loadstart")};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.events.triggerEvent("loadend")};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},setUrl:function(a){this.url=a;this.tile.draw()},getURL:function(){return this.url},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return!this.active?this.active=!0:!1},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{events:null,auto:!1,timer:null,initialize:function(a){OpenLayers.Strategy.prototype.initialize.apply(this,[a]);this.events=new OpenLayers.Events(this)},activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a&&this.auto)if("number"===typeof this.auto)this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),1E3*this.auto);else this.layer.events.on({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16224 scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.auto&&("number"===typeof this.auto?window.clearInterval(this.timer):this.layer.events.un({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,scope:this}));return a},triggerSave:function(a){var b=a.feature;(b.state===OpenLayers.State.INSERT||b.state===OpenLayers.State.UPDATE||b.state===OpenLayers.State.DELETE)&&this.save([a.feature])},save:function(a){a||(a=this.layer.features);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16225 this.events.triggerEvent("start",{features:a});var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b)){for(var d=a.length,e=Array(d),f,g,h=0;h<d;++h)f=a[h],g=f.clone(),g.fid=f.fid,g.state=f.state,f.url&&(g.url=f.url),g._original=f,g.geometry.transform(c,b),e[h]=g;a=e}this.layer.protocol.commit(a,{callback:this.onCommit,scope:this})},onCommit:function(a){var b={response:a};if(a.success()){for(var c=a.reqFeatures,d,e=[],f=a.insertIds||[],g=0,h=0,i=c.length;h<i;++h)if(d=c[h],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16226 d=d._original||d,a=d.state)a==OpenLayers.State.DELETE?e.push(d):a==OpenLayers.State.INSERT&&(d.fid=f[g],++g),d.state=null;0<e.length&&this.layer.destroyFeatures(e);this.events.triggerEvent("success",b)}else this.events.triggerEvent("fail",b)},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{defaultDesc:"No description available",extractWaypoints:!0,extractTracks:!0,extractRoutes:!0,extractAttributes:!0,namespaces:{gpx:"http://www.topografix.com/GPX/1/1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",creator:"OpenLayers",initialize:function(a){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16227 [a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=[];if(this.extractTracks)for(var c=a.getElementsByTagName("trk"),d=0,e=c.length;d<e;d++){var f={};this.extractAttributes&&(f=this.parseAttributes(c[d]));for(var g=this.getElementsByTagNameNS(c[d],c[d].namespaceURI,"trkseg"),h=0,i=g.length;h<i;h++){var j=this.extractSegment(g[h],"trkpt");b.push(new OpenLayers.Feature.Vector(j,f))}}if(this.extractRoutes){e=a.getElementsByTagName("rte");c=0;for(d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16228 e.length;c<d;c++)f={},this.extractAttributes&&(f=this.parseAttributes(e[c])),g=this.extractSegment(e[c],"rtept"),b.push(new OpenLayers.Feature.Vector(g,f))}if(this.extractWaypoints){a=a.getElementsByTagName("wpt");c=0;for(e=a.length;c<e;c++)f={},this.extractAttributes&&(f=this.parseAttributes(a[c])),d=new OpenLayers.Geometry.Point(a[c].getAttribute("lon"),a[c].getAttribute("lat")),b.push(new OpenLayers.Feature.Vector(d,f))}if(this.internalProjection&&this.externalProjection){f=0;for(a=b.length;f<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16229 a;f++)b[f].geometry.transform(this.externalProjection,this.internalProjection)}return b},extractSegment:function(a,b){for(var c=this.getElementsByTagNameNS(a,a.namespaceURI,b),d=[],e=0,f=c.length;e<f;e++)d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"),c[e].getAttribute("lat")));return new OpenLayers.Geometry.LineString(d)},parseAttributes:function(a){for(var b={},a=a.firstChild,c,d;a;){if(1==a.nodeType&&a.firstChild&&(c=a.firstChild,3==c.nodeType||4==c.nodeType))d=a.prefix?a.nodeName.split(":")[1]:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16230 a.nodeName,"trkseg"!=d&&"rtept"!=d&&(b[d]=c.nodeValue);a=a.nextSibling}return b},write:function(a,b){var a=OpenLayers.Util.isArray(a)?a:[a],c=this.createElementNS(this.namespaces.gpx,"gpx");c.setAttribute("version","1.1");c.setAttribute("creator",this.creator);this.setAttributes(c,{"xsi:schemaLocation":this.schemaLocation});b&&"object"==typeof b&&c.appendChild(this.buildMetadataNode(b));for(var d=0,e=a.length;d<e;d++)c.appendChild(this.buildFeatureNode(a[d]));return OpenLayers.Format.XML.prototype.write.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16231 [c])},buildMetadataNode:function(a){for(var b=["name","desc","author"],c=this.createElementNSPlus("gpx:metadata"),d=0;d<b.length;d++){var e=b[d];if(a[e]){var f=this.createElementNSPlus("gpx:"+e);f.appendChild(this.createTextNode(a[e]));c.appendChild(f)}}return c},buildFeatureNode:function(a){var b=a.geometry,b=b.clone();this.internalProjection&&this.externalProjection&&b.transform(this.internalProjection,this.externalProjection);if("OpenLayers.Geometry.Point"==b.CLASS_NAME){var c=this.buildWptNode(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16232 this.appendAttributesNode(c,a);return c}c=this.createElementNSPlus("gpx:trk");this.appendAttributesNode(c,a);for(var a=this.buildTrkSegNode(b),a=OpenLayers.Util.isArray(a)?a:[a],b=0,d=a.length;b<d;b++)c.appendChild(a[b]);return c},buildTrkSegNode:function(a){var b,c,d,e;if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){b=this.createElementNSPlus("gpx:trkseg");c=0;for(d=a.components.length;c<d;c++)e=a.components[c],b.appendChild(this.buildTrkPtNode(e));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16233 return b}b=[];c=0;for(d=a.components.length;c<d;c++)b.push(this.buildTrkSegNode(a.components[c]));return b},buildTrkPtNode:function(a){var b=this.createElementNSPlus("gpx:trkpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},buildWptNode:function(a){var b=this.createElementNSPlus("gpx:wpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},appendAttributesNode:function(a,b){var c=this.createElementNSPlus("gpx:name");c.appendChild(this.createTextNode(b.attributes.name||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16234 b.id));a.appendChild(c);c=this.createElementNSPlus("gpx:desc");c.appendChild(this.createTextNode(b.attributes.description||this.defaultDesc));a.appendChild(c)},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if("1.1.1"==c||"1.1.0"==c)c="1.1";return c},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(a){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var a=a.documentElement.childNodes,b=[],c,d,e=0;e<a.length;++e)if(c=a[e],d=c.nodeName,"LayerDescription"==d){d=c.getAttribute("name");var f="",g="",h="";c.getAttribute("owsType")?(f=c.getAttribute("owsType"),g=c.getAttribute("owsURL")):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16235 ""!=c.getAttribute("wfs")?(f="WFS",g=c.getAttribute("wfs")):""!=c.getAttribute("wcs")&&(f="WCS",g=c.getAttribute("wcs"));c=c.getElementsByTagName("Query");0<c.length&&((h=c[0].getAttribute("typeName"))||(h=c[0].getAttribute("typename")));b.push({layerName:d,owsType:f,owsURL:g,typeName:h})}return b},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16236 [a])},getURL:function(a){var a=this.getXYZ(a),b=this.url;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w)),a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h)),b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16237 arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16238 this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16239 a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16240 d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16241 2)/c)*c}},drawGeometry:function(){},drawText:function(){},removeText:function(){},clear:function(){},getFeatureIdFromEvent:function(){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(){},moveRoot:function(){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16242 !1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16243 OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16244 setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16245 b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16246 d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16247 b,c){var d=new Image;b.graphicTitle&&(d.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f),i=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),k=b[0],b=b[1];if(!isNaN(k)&&!isNaN(b)){var k=k+g|0,b=b+h|0,l=this.canvas;l.globalAlpha=i;var m=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16248 OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);l.drawImage(d,k*m,b*m,e*m,f*m);if(this.hitDetection){this.setHitContextStyle("fill",c);this.hitContext.fillRect(k,b,e,f)}}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16249 if(h.length&&!(2>h.length)&&(a=this.getLocalXY(a),e=a[0],g=a[1],!isNaN(e)&&!isNaN(g))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16250 this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16251 b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16252 e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16253 a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);var a="000000"+a.toString(16),b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16254 "fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16255 this.getLocalXY(a),a=d[0],d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16256 c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16257 a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();var d=this.getLocalXY(b[0]),f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){var a=a.components,d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16258 d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16259 this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16260 null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];null==h&&(h=-0.5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16261 g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var i=c[0]+h*this.canvas.mozMeasureText(e[g]),j=c[1]+g*d;this.canvas.translate(i,j);this.canvas.mozDrawText(e[g]);this.canvas.translate(-i,-j)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16262 0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers.Feature.Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16263 this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16264 a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:!1,interestingTagsExclude:null,areaTags:null,initialize:function(a){for(var b={interestingTagsExclude:"source source_ref source:ref history attribution created_by".split(" "),areaTags:"area building leisure tourism ruins historic landuse military natural sport".split(" ")},b=OpenLayers.Util.extend(b,a),c={},a=0;a<b.interestingTagsExclude.length;a++)c[b.interestingTagsExclude[a]]=!0;b.interestingTagsExclude=c;c={};for(a=0;a<b.areaTags.length;a++)c[b.areaTags[a]]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16265 !0;b.areaTags=c;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[b])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var b=this.getNodes(a),c=this.getWays(a),a=Array(c.length),d=0;d<c.length;d++){for(var e=Array(c[d].nodes.length),f=this.isWayArea(c[d])?1:0,g=0;g<c[d].nodes.length;g++){var h=b[c[d].nodes[g]],i=new OpenLayers.Geometry.Point(h.lon,h.lat);i.osm_id=parseInt(c[d].nodes[g]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16266 e[g]=i;h.used=!0}h=null;h=f?new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e)):new OpenLayers.Geometry.LineString(e);this.internalProjection&&this.externalProjection&&h.transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(h,c[d].tags);e.osm_id=parseInt(c[d].id);e.fid="way."+e.osm_id;a[d]=e}for(var j in b){h=b[j];if(!h.used||this.checkTags){c=null;if(this.checkTags){c=this.getTags(h.node,!0);if(h.used&&!c[1])continue;c=c[0]}else c=this.getTags(h.node);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16267 e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon,h.lat),c);this.internalProjection&&this.externalProjection&&e.geometry.transform(this.externalProjection,this.internalProjection);e.osm_id=parseInt(j);e.fid="node."+e.osm_id;a.push(e)}h.node=null}return a},getNodes:function(a){for(var a=a.getElementsByTagName("node"),b={},c=0;c<a.length;c++){var d=a[c],e=d.getAttribute("id");b[e]={lat:d.getAttribute("lat"),lon:d.getAttribute("lon"),node:d}}return b},getWays:function(a){for(var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16268 a.getElementsByTagName("way"),b=[],c=0;c<a.length;c++){var d=a[c],e={id:d.getAttribute("id")};e.tags=this.getTags(d);d=d.getElementsByTagName("nd");e.nodes=Array(d.length);for(var f=0;f<d.length;f++)e.nodes[f]=d[f].getAttribute("ref");b.push(e)}return b},getTags:function(a,b){for(var c=a.getElementsByTagName("tag"),d={},e=!1,f=0;f<c.length;f++){var g=c[f].getAttribute("k");d[g]=c[f].getAttribute("v");b&&(this.interestingTagsExclude[g]||(e=!0))}return b?[d,e]:d},isWayArea:function(a){var b=!1,c=!1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16269 a.nodes[0]==a.nodes[a.nodes.length-1]&&(b=!0);if(this.checkTags)for(var d in a.tags)if(this.areaTags[d]){c=!0;break}return b&&(this.checkTags?c:!0)},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.osm_id=1;this.created_nodes={};var b=this.createElementNS(null,"osm");b.setAttribute("version","0.5");b.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var c=a.length-1;0<=c;c--)for(var d=this.createFeatureNodes(a[c]),e=0;e<d.length;e++)b.appendChild(d[e]);return OpenLayers.Format.XML.prototype.write.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16270 [b])},createFeatureNodes:function(a){var b=[],c=a.geometry.CLASS_NAME,c=c.substring(c.lastIndexOf(".")+1),c=c.toLowerCase();(c=this.createXML[c])&&(b=c.apply(this,[a]));return b},createXML:{point:function(a){var b=null,c=a.geometry?a.geometry:a;this.internalProjection&&this.externalProjection&&(c=c.clone(),c.transform(this.internalProjection,this.externalProjection));var d=!1;a.osm_id?(b=a.osm_id,this.created_nodes[b]&&(d=!0)):(b=-this.osm_id,this.osm_id++);var e=d?this.created_nodes[b]:this.createElementNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16271 "node");this.created_nodes[b]=e;e.setAttribute("id",b);e.setAttribute("lon",c.x);e.setAttribute("lat",c.y);a.attributes&&this.serializeTags(a,e);this.setState(a,e);return d?[]:[e]},linestring:function(a){var b,c=[],d=a.geometry;a.osm_id?b=a.osm_id:(b=-this.osm_id,this.osm_id++);var e=this.createElementNS(null,"way");e.setAttribute("id",b);for(b=0;b<d.components.length;b++){var f=this.createXML.point.apply(this,[d.components[b]]);if(f.length){var f=f[0],g=f.getAttribute("id");c.push(f)}else g=d.components[b].osm_id,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16272 f=this.created_nodes[g];this.setState(a,f);f=this.createElementNS(null,"nd");f.setAttribute("ref",g);e.appendChild(f)}this.serializeTags(a,e);c.push(e);return c},polygon:function(a){var b=OpenLayers.Util.extend({area:"yes"},a.attributes),b=new OpenLayers.Feature.Vector(a.geometry.components[0],b);b.osm_id=a.osm_id;return this.createXML.linestring.apply(this,[b])}},serializeTags:function(a,b){for(var c in a.attributes){var d=this.createElementNS(null,"tag");d.setAttribute("k",c);d.setAttribute("v",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16273 a.attributes[c]);b.appendChild(d)}},setState:function(a,b){if(a.state){var c=null;switch(a.state){case OpenLayers.State.UPDATE:case OpenLayers.State.DELETE:c="delete"}c&&b.setAttribute("action",c)}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:0))==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16274 this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=!1;return!0},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16275 this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,touch:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16276 dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.stop(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):(this.started=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16277 !1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;if(this.started&&!this.timeoutId&&(a.xy.x!=this.last.x||a.xy.y!=this.last.y))!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16278 document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy;return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(){},move:function(){},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16279 up:function(){},out:function(){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this}));return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16280 touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(){return this.start==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16281 this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=this.touch=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16282 "olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,touch:!1,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16283 b},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this}));return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.stop(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16284 !this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16285 b;if((this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer)this.feature=null;this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=null);this.feature?("touchstart"===b&&OpenLayers.Event.stop(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):(!d||e)&&this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16286 (d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",[this.lastFeature]);return c},triggerCallback:function(a,b,c){(b=this.EVENTMAP[a][b])&&("click"==a&&this.up&&this.down?Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c):this.callback(b,c))},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16287 this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.touch=!1,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){("removelayer"==a.type||"order"==a.property)&&this.moveLayerToTop()},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16288 moveLayerToTop:function(){this.layer.setZIndex(Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1)},moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(){},onDrag:function(){},onComplete:function(){},onEnter:function(){},onLeave:function(){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16289 up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&(!this.over&&this.overFeature(a))&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16290 !1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16291 this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16292 (a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16293 cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16294 a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16295 b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);(!this.renderer||!this.renderer.supported())&&this.assignRenderer();if(!this.renderer||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16296 !this.renderer.supported())this.renderer=null,this.displayError();this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16297 this.protocol=null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));for(var a=OpenLayers.Layer.prototype.clone.apply(this,[a]),b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16298 this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16299 arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(){this.drawn=!1;if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16300 arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+parseInt(this.map.layerContainerDiv.style.left,10),e=-Math.round(e),d=d+parseInt(this.map.layerContainerDiv.style.top,10),d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16301 d+"px";d=this.renderer.setExtent(this.map.getExtent().scale(this.ratio),b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d){this.drawn=!0;f=0;for(d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)}},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16302 var b=this.div.style.display;b!=this.renderer.root.style.display&&(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16303 this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16304 OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16305 e)&&OpenLayers.Util.removeItem(this.selectedFeatures,e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){var a=!a||!a.silent,b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16306 this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){!b&&a.state===OpenLayers.State.DELETE&&(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16307 b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16308 null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(){},preFeatureInsert:function(){},getDataExtent:function(){var a=null,b=this.features;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16309 if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16310 this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16311 b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16312 {click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16313 new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16314 (this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){for(var b=this.layers||[this.layer],c,d,e=0;e<b.length;++e){c=b[e];for(var f=c.selectedFeatures.length-1;0<=f;--f)d=c.selectedFeatures[f],(!a||a.except!=d)&&this.unselect(d)}},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,a)?this.toggleSelect()?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16315 this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=a.layer;this.hover&&(this.highlightOnly?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16316 this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&(a._prevHighlighter=a._lastHighlighter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16317 a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=this.onBeforeSelect.call(this.scope,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16318 a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",{feature:a});this.onUnselect.call(this.scope,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16319 a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=d.features[f];h.getVisibility()&&(null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16320 this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();this.deactivate();this.layers&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16321 (this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,observeElement:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this)},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments)},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16322 arguments)){this.observeElement=this.observeElement||document;for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.observe(this.observeElement,this.KEY_EVENTS[a],this.eventListener);return!0}return!1},deactivate:function(){var a=!1;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.stopObserving(this.observeElement,this.KEY_EVENTS[a],this.eventListener);a=!0}return a},handleKeyEvent:function(a){this.checkModifiers(a)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16323 this.callback(a.type,[a])},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:!0,toggle:!0,standalone:!1,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,createVertices:!0,modified:!1,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(a,b){b=b||{};this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16324 a;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,b.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[b]);OpenLayers.Util.isArray(this.deleteCodes)||(this.deleteCodes=[this.deleteCodes]);var c=this,d={geometryTypes:this.geometryTypes,clickout:this.clickout,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16325 toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};!1===this.standalone&&(this.selectControl=new OpenLayers.Control.SelectFeature(a,d));this.dragControl=new OpenLayers.Control.DragFeature(a,{geometryTypes:["OpenLayers.Geometry.Point"],onStart:function(a,b){c.dragStart.apply(c,[a,b])},onDrag:function(a,b){c.dragVertex.apply(c,[a,b])},onComplete:function(a){c.dragComplete.apply(c,[a])},featureCallbacks:{over:function(a){(c.standalone!==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16326 true||a._sketch||c.feature===a)&&c.dragControl.overFeature.apply(c.dragControl,[a])}}});this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,{keydown:this.handleKeypress})}},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return(this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16327 arguments)},deactivate:function(){var a=!1;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:!0});this.layer.removeFeatures(this.virtualVertices,{silent:!0});this.vertices=[];this.dragControl.deactivate();var b=(a=this.feature)&&a.geometry&&a.layer;!1===this.standalone?(b&&this.selectControl.unselect.apply(this.selectControl,[a]),this.selectControl.deactivate()):b&&this.unselectFeature(a);this.handlers.keyboard.deactivate();a=!0}return a},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16328 beforeSelectFeature:function(a){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:a})},selectFeature:function(a){if(!this.standalone||!1!==this.beforeSelectFeature(a))this.feature=a,this.modified=!1,this.resetVertices(),this.dragControl.activate(),this.onModificationStart(this.feature);var b=a.modified;if(a.geometry&&(!b||!b.geometry))this._originalGeometry=a.geometry.clone()},unselectFeature:function(a){this.layer.removeFeatures(this.vertices,{silent:!0});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16329 {silent:!0});this.virtualVertices=[];this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),delete this.dragHandle);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),delete this.radiusHandle);this.feature=null;this.dragControl.deactivate();this.onModificationEnd(a);this.layer.events.triggerEvent("afterfeaturemodified",{feature:a,modified:this.modified});this.modified=!1},dragStart:function(a,b){if(a!=this.feature&&(!a.geometry.parent&&a!=this.dragHandle&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16330 a!=this.radiusHandle)&&(!1===this.standalone&&this.feature&&this.selectControl.clickFeature.apply(this.selectControl,[this.feature]),null==this.geometryTypes||-1!=OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)))this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[a]),this.dragControl.overFeature.apply(this.dragControl,[a]),this.dragControl.lastPixel=b,this.dragControl.handlers.drag.started=!0,this.dragControl.handlers.drag.start=b,this.dragControl.handlers.drag.last=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16331 b},dragVertex:function(a,b){this.modified=!0;"OpenLayers.Geometry.Point"==this.feature.geometry.CLASS_NAME?(this.feature!=a&&(this.feature=a),this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b})):(a._index?(a.geometry.parent.addComponent(a.geometry,a._index),delete a._index,OpenLayers.Util.removeItem(this.virtualVertices,a),this.vertices.push(a)):a==this.dragHandle?(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[],this.radiusHandle&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16332 (this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null)):a!==this.radiusHandle&&this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b}),0<this.virtualVertices.length&&(this.layer.destroyFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent));this.layer.drawFeature(a)},dragComplete:function(){this.resetVertices();this.setFeatureState();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16333 this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE&&(this.feature.state=OpenLayers.State.UPDATE,this.modified&&this._originalGeometry)){var a=this.feature;a.modified=OpenLayers.Util.extend(a.modified,{geometry:this._originalGeometry});delete this._originalGeometry}},resetVertices:function(){this.dragControl.feature&&this.dragControl.outFeature(this.dragControl.feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16334 0<this.vertices.length&&(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[]);0<this.virtualVertices.length&&(this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]);this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),this.dragHandle=null);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null);this.feature&&"OpenLayers.Geometry.Point"!=this.feature.geometry.CLASS_NAME&&(this.mode&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16335 OpenLayers.Control.ModifyFeature.DRAG&&this.collectDragHandle(),this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE)&&this.collectRadiusHandle(),this.mode&OpenLayers.Control.ModifyFeature.RESHAPE&&(this.mode&OpenLayers.Control.ModifyFeature.RESIZE||this.collectVertices()))},handleKeypress:function(a){var b=a.keyCode;if(this.feature&&-1!=OpenLayers.Util.indexOf(this.deleteCodes,b)&&(b=this.dragControl.feature)&&-1!=OpenLayers.Util.indexOf(this.vertices,b)&&!this.dragControl.handlers.drag.dragging&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16336 b.geometry.parent)b.geometry.parent.removeComponent(b.geometry),this.layer.events.triggerEvent("vertexremoved",{vertex:b.geometry,feature:this.feature,pixel:a.xy}),this.layer.drawFeature(this.feature,this.standalone?void 0:this.selectControl.renderIntent),this.modified=!0,this.resetVertices(),this.setFeatureState(),this.onModification(this.feature),this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},collectVertices:function(){function a(c){var d,e,f;if("OpenLayers.Geometry.Point"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16337 c.CLASS_NAME)e=new OpenLayers.Feature.Vector(c),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e);else{f=c.components.length;"OpenLayers.Geometry.LinearRing"==c.CLASS_NAME&&(f-=1);for(d=0;d<f;++d)e=c.components[d],"OpenLayers.Geometry.Point"==e.CLASS_NAME?(e=new OpenLayers.Feature.Vector(e),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e)):a(e);if(b.createVertices&&"OpenLayers.Geometry.MultiPoint"!=c.CLASS_NAME){d=0;for(f=c.components.length;d<f-1;++d){e=c.components[d];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16338 var g=c.components[d+1];"OpenLayers.Geometry.Point"==e.CLASS_NAME&&"OpenLayers.Geometry.Point"==g.CLASS_NAME&&(e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point((e.x+g.x)/2,(e.y+g.y)/2),null,b.virtualStyle),e.geometry.parent=c,e._index=d+1,e._sketch=!0,b.virtualVertices.push(e))}}}}this.vertices=[];this.virtualVertices=[];var b=this;a.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:!0});this.layer.addFeatures(this.vertices,{silent:!0})},collectDragHandle:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16339 this.feature.geometry,b=a.getBounds().getCenterLonLat(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),c=new OpenLayers.Feature.Vector(b);b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);a.move(b,c)};c._sketch=!0;this.dragHandle=c;this.dragHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.dragHandle],{silent:!0})},collectRadiusHandle:function(){var a=this.feature.geometry,b=a.getBounds(),c=b.getCenterLonLat(),d=new OpenLayers.Geometry.Point(c.lon,c.lat),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16340 b=new OpenLayers.Geometry.Point(b.right,b.bottom),c=new OpenLayers.Feature.Vector(b),e=this.mode&OpenLayers.Control.ModifyFeature.RESIZE,f=this.mode&OpenLayers.Control.ModifyFeature.RESHAPE,g=this.mode&OpenLayers.Control.ModifyFeature.ROTATE;b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);var j=this.x-d.x,k=this.y-d.y,l=j-b,m=k-c;if(g){var n=Math.atan2(m,l),n=Math.atan2(k,j)-n,n=n*(180/Math.PI);a.rotate(n,d)}if(e){var o;f?(k/=m,o=j/l/k):(l=Math.sqrt(l*l+m*m),k=Math.sqrt(j*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16341 j+k*k)/l);a.resize(k,d,o)}};c._sketch=!0;this.radiusHandle=c;this.radiusHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.radiusHandle],{silent:!0})},setMap:function(a){this.standalone||this.selectControl.setMap(a);this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16342 OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{key:null,serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:'<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16343 metadata:null,type:"Road",culture:"en-US",metadataParams:null,tileOptions:null,initialize:function(a){a=OpenLayers.Util.applyDefaults({sphericalMercator:!0},a);OpenLayers.Layer.XYZ.prototype.initialize.apply(this,[a.name||"Bing "+(a.type||this.type),null,a]);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options.tileOptions);this.loadMetadata()},loadMetadata:function(){this._callbackId="_callback_"+this.id.replace(/\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16344 this);var a=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams),a="http://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.type+"?"+OpenLayers.Util.getParameterString(a),b=document.createElement("script");b.type="text/javascript";b.src=a;b.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(b)},initLayer:function(){var a=this.metadata.resourceSets[0].resources[0],b=a.imageUrl.replace("{quadkey}","${quadkey}"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16345 b=b.replace("{culture}",this.culture);this.url=[];for(var c=0;c<a.imageUrlSubdomains.length;++c)this.url.push(b.replace("{subdomain}",a.imageUrlSubdomains[c]));this.addOptions({maxResolution:Math.min(this.serverResolutions[a.zoomMin],this.maxResolution||Number.POSITIVE_INFINITY),numZoomLevels:Math.min(a.zoomMax+1-a.zoomMin,this.numZoomLevels)},!0)},getURL:function(a){if(this.url){for(var b=this.getXYZ(a),a=b.x,c=b.y,b=b.z,d=[],e=b;0<e;--e){var f="0",g=1<<e-1;0!=(a&g)&&f++;0!=(c&g)&&(f++,f++);d.push(f)}d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16346 d.join("");a=this.selectUrl(""+a+c+b,this.url);return OpenLayers.String.format(a,{quadkey:d})}},updateAttribution:function(){var a=this.metadata;if(a.resourceSets&&this.map&&this.map.center){var b=a.resourceSets[0].resources[0],c=this.map.getExtent().transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326")),b=b.imageryProviders,d=OpenLayers.Util.indexOf(this.serverResolutions,this.getServerResolution()),e="",f,g,h,i,j,k,l;g=0;for(h=b.length;g<h;++g){f=b[g];i=0;for(j=f.coverageAreas.length;i<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16347 j;++i)l=f.coverageAreas[i],k=OpenLayers.Bounds.fromArray(l.bbox,!0),c.intersectsBounds(k)&&(d<=l.zoomMax&&d>=l.zoomMin)&&(e+=f.attribution+" ")}this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),logo:a.brandLogoUri,copyrights:e});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"})}},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.updateAttribution();this.map.events.register("moveend",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16348 this,this.updateAttribution)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Bing(this.options));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.Bing"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16349 OpenLayers.Layer.Bing.processMetadata=function(a){this.metadata=a;this.initLayer();a=document.getElementById(this._callbackId);a.parentNode.removeChild(a);window[this._callbackId]=void 0;delete this._callbackId};OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(a){a=a||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[a.name,a])},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);a.events.register("moveend",this,this.onMoveEnd)},removeMap:function(a){a.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16350 arguments)},setRatio:function(a){this.ratio=a;this.updateGrid(!0)},setMaxFeatures:function(a){this.maxFeatures=a;this.updateGrid(!0)},setSpacing:function(a,b){this.dx=a;this.dy=b||a;this.updateGrid(!0)},setOrigin:function(a){this.origin=a;this.updateGrid(!0)},getOrigin:function(){this.origin||(this.origin=this.map.getExtent().getCenterLonLat());return this.origin},setRotation:function(a){this.rotation=a;this.updateGrid(!0)},onMoveEnd:function(){this.updateGrid()},getViewBounds:function(){var a=this.map.getExtent();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16351 if(this.rotation){var b=this.getOrigin(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),a=a.toGeometry();a.rotate(-this.rotation,b);a=a.getBounds()}return a},updateGrid:function(a){if(a||this.invalidBounds()){var b=this.getViewBounds(),c=this.getOrigin(),a=new OpenLayers.Geometry.Point(c.lon,c.lat),d=b.getWidth(),e=b.getHeight(),f=d/e,g=Math.sqrt(this.dx*this.dy*this.maxFeatures/f),d=Math.min(d*this.ratio,g*f),e=Math.min(e*this.ratio,g),b=b.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(b.lon-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16352 d/2,b.lat-e/2,b.lon+d/2,b.lat+e/2);for(var b=Math.floor(e/this.dy),d=Math.floor(d/this.dx),e=c.lon+this.dx*Math.ceil((this.gridBounds.left-c.lon)/this.dx),c=c.lat+this.dy*Math.ceil((this.gridBounds.bottom-c.lat)/this.dy),g=Array(b*d),h,i=0;i<d;++i)for(var f=e+i*this.dx,j=0;j<b;++j)h=c+j*this.dy,h=new OpenLayers.Geometry.Point(f,h),this.rotation&&h.rotate(this.rotation,a),g[i*b+j]=new OpenLayers.Feature.Vector(h);this.destroyFeatures(this.features,{silent:!0});this.addFeatures(g,{silent:!0})}},invalidBounds:function(){return!this.gridBounds||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16353 !this.gridBounds.containsBounds(this.getViewBounds())},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=!1,c=!1,d=!1,e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16354 OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"),b=f&&"auto"==f||"scroll"==f}catch(g){}if(!c)for(var d=0,h=this.map.layers.length;d<h;d++)if(e==this.map.layers[d].div||e==this.map.layers[d].pane){c=!0;break}d=e==this.map.div;e=e.parentNode}!b&&d&&(c&&((b=0,a||(a=window.event),a.wheelDelta?(b=a.wheelDelta/120,window.opera&&9.2>window.opera.version()&&(b=-b)):a.detail&&(b=-a.detail/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16355 3),this.delta+=b,this.interval)?(window.clearTimeout(this._timeoutId),this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(a)},this),this.interval)):this.wheelZoom(a)),OpenLayers.Event.stop(a))}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(this.mousePosition&&(a.xy=this.mousePosition),a.xy||(a.xy=this.map.getPixelFromLonLat(this.map.getCenter())),0>b?this.callback("down",[a,this.cumulative?b:-1]):this.callback("up",[a,this.cumulative?b:1]))},mousemove:function(a){this.mousePosition=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16356 a.xy},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16357 b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(a){OpenLayers.Util.extend(this,a)},clone:function(){return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({},this))},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16358 this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16359 typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16360 this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16361 OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{profile:null,defaultVersion:"1.0.0",stringifyOutput:!0,namedLayersAsArray:!1,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({outerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},innerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},Box:function(a,b){var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16362 {};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){a=this.writeNode(OpenLayers.Util.isArray(a)?"wfs:FeatureCollection":"gml:featureMember",a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16363 return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[a],b);return b},coordinates:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+","+d.y:d.y+","+d.x,void 0!=d.z&&(c[e]+=","+d.z);return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:1==b?c[0]:c.join(" ")})},LineString:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16364 this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",a.components,b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",a.components[0],b);for(var c=1;c<a.components.length;++c)this.writeNode("innerBoundaryIs",a.components[c],b);return b},outerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",a,b);return b},innerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:innerBoundaryIs");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16365 this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",a.components,b);return b},Box:function(a){var b=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:a.left,y:a.bottom},{x:a.right,y:a.top}],b);this.srsName&&b.setAttribute("srsName",this.srsName);return b}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16366 CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16367 b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escape");c.value2regex(d,e,f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16368 feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16369 {attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Box",a.value,b);a.projection&&c.setAttribute("srsName",a.projection);return b}},OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16370 writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Box",a.value);a.projection&&d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:!1,schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,[a,b])},readers:{wfs:OpenLayers.Util.applyDefaults({WFS_TransactionResponse:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16371 b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},InsertResult:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])},TransactionResult:function(a,b){this.readChildNodes(a,b)},Status:function(a,b){this.readChildNodes(a,b)},SUCCESS:function(a,b){b.success=!0}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,feature:OpenLayers.Format.GML.v2.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16372 writers:{wfs:OpenLayers.Util.applyDefaults({Query:function(a){var a=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},a),b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType}});a.srsNameInQuery&&a.srsName&&c.setAttribute("srsName",a.srsName);a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16373 d;b++)this.writeNode("ogc:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(this.setFilterProperty(a.filter),this.writeNode("ogc:Filter",a.filter,c));return c}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16374 0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){var a=a.id,b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16375 null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16376 OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){var b=a.getZIndex(b),d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16377 OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16378 this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(b&&(b.zIndexing||b.yOrdering))this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering)},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16379 this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth(),a=a.scale(1/f),f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(){},drawGeometry:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16380 b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));if(!1==e&&(b=document.getElementById(a.id)))b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16381 d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16382 this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16383 b,c,null)},drawGeometryNode:function(a,b,c){var c=c||a._style,d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16384 case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(){},drawPoint:function(){},drawLineString:function(){},drawLinearRing:function(){},drawPolygon:function(){},drawRectangle:function(){},drawCircle:function(){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16385 getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else if((c=OpenLayers.Util.getElement(a.id))&&c.parentNode)if(c.geometry&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16386 (c.geometry.destroy(),c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic)(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c)},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(){},createNode:function(){},moveRoot:function(a){var b=this.root;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16387 a.root.parentNode==this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){var a=a||window.location.href,b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16388 "OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}if(b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon))this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16389 this.setCenter()},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16390 "B"==d?this.map.setBaseLayer(c):("T"==d||"F"==d)&&c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null!==a&&"object"==typeof a&&!OpenLayers.Util.isElement(a)?(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=OpenLayers.Util.getElement(this.element))):(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16391 this.base=b||document.location.href)},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16392 this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);!this.element&&!this.anchor&&(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16393 changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base;-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b+=a+OpenLayers.Util.getParameterString(this.createParams());this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){var a=a||this.map.getCenter(),d=OpenLayers.Util.getParameters(this.base);if(a){d.zoom=b||this.map.getZoom();b=a.lat;a=a.lon;this.displayProjection&&(b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16394 OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y);d.lat=Math.round(1E5*b)/1E5;d.lon=Math.round(1E5*a)/1E5;c=c||this.map.layers;d.layers="";a=0;for(b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:!0,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(a,b,c){var d=[];d.push(a,b,{},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,d)},clone:function(a){null==a&&(a=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.getServerResolution(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16395 c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h)),c=this.serviceVersion+"/"+this.layername+"/"+this.getServerZoom()+"/"+c+"/"+a+"."+this.type,a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({refresh:this.load,scope:this});if(!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return!0}return!1},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16396 scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart");b.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,b.map.getProjectionObject()),filter:b.filter},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a,b){var c=this.layer;c.destroyFeatures();var d=b.features;if(d&&0<d.length){if(!a.equals(c.projection))for(var e,f=0,g=d.length;f<g;++f)(e=d[f].geometry)&&e.transform(c.projection,a);c.addFeatures(d)}c.events.triggerEvent("loadend")},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16397 CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Control.Zoom=OpenLayers.Class(OpenLayers.Control,{zoomInText:"+",zoomInId:"olZoomInLink",zoomOutText:"-",zoomOutId:"olZoomOutLink",draw:function(){var a=OpenLayers.Control.prototype.draw.apply(this),b=this.getOrCreateLinks(a),c=b.zoomIn,b=b.zoomOut,d=this.map.events;b.parentNode!==a&&(d=this.events,d.attachToElement(b.parentNode));d.register("buttonclick",this,this.onZoomClick);this.zoomInLink=c;this.zoomOutLink=b;return a},getOrCreateLinks:function(a){var b=document.getElementById(this.zoomInId),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16398 c=document.getElementById(this.zoomOutId);b||(b=document.createElement("a"),b.href="#zoomIn",b.appendChild(document.createTextNode(this.zoomInText)),b.className="olControlZoomIn",a.appendChild(b));OpenLayers.Element.addClass(b,"olButton");c||(c=document.createElement("a"),c.href="#zoomOut",c.appendChild(document.createTextNode(this.zoomOutText)),c.className="olControlZoomOut",a.appendChild(c));OpenLayers.Element.addClass(c,"olButton");return{zoomIn:b,zoomOut:c}},onZoomClick:function(a){a=a.buttonElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16399 a===this.zoomInLink?this.map.zoomIn():a===this.zoomOutLink&&this.map.zoomOut()},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onZoomClick);delete this.zoomInLink;delete this.zoomOutLink;OpenLayers.Control.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Control.Zoom"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,addNodes:function(a,b){if(2>a.length)throw Error("At least two point features have to be added to create a line from");for(var c=Array(a.length-1),d,e,f,g=0,h=a.length;g<h;g++){d=a[g];if(f=d.geometry){if("OpenLayers.Geometry.Point"!=f.CLASS_NAME)throw new TypeError("Only features with point geometries are supported.");}else f=d.lonlat,f=new OpenLayers.Geometry.Point(f.lon,f.lat);if(0<g){d=null!=this.dataFrom?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16400 a[g+this.dataFrom].data||a[g+this.dataFrom].attributes:null;var i=null!=this.styleFrom?a[g+this.styleFrom].style:null;e=new OpenLayers.Geometry.LineString([e,f]);c[g-1]=new OpenLayers.Feature.Vector(e,d,i)}e=f}this.addFeatures(c,b)},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={SOURCE_NODE:-1,TARGET_NODE:0};OpenLayers.Protocol.WFS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.WFS.DEFAULTS),b=OpenLayers.Protocol.WFS["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported WFS version: "+a.version;return new b(a)};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16401 OpenLayers.Protocol.WFS.fromWMSLayer=function(a,b){var c,d;c=a.params.LAYERS;c=(OpenLayers.Util.isArray(c)?c[0]:c).split(":");1<c.length&&(d=c[0]);c=c.pop();d={url:a.url,featureType:c,featurePrefix:d,srsName:a.projection&&a.projection.getCode()||a.map&&a.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b,d))};OpenLayers.Protocol.WFS.DEFAULTS={version:"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,markers:null,drawn:!1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var a=0,b=this.markers.length;a<b;a++)this.markers[a].setOpacity(this.opacity)}},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16402 arguments);if(b||!this.drawn){for(var d=0,e=this.markers.length;d<e;d++)this.drawMarker(this.markers[d]);this.drawn=!0}},addMarker:function(a){this.markers.push(a);1>this.opacity&&a.setOpacity(this.opacity);this.map&&this.map.getExtent()&&(a.map=this.map,this.drawMarker(a))},removeMarker:function(a){this.markers&&this.markers.length&&(OpenLayers.Util.removeItem(this.markers,a),a.erase())},clearMarkers:function(){if(null!=this.markers)for(;0<this.markers.length;)this.removeMarker(this.markers[0])},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16403 drawMarker:function(a){var b=this.map.getLayerPxFromLonLat(a.lonlat);null==b?a.display(!1):a.isDrawn()?a.icon&&a.icon.moveTo(b):this.div.appendChild(a.draw(b))},getDataExtent:function(){var a=null;if(this.markers&&0<this.markers.length)for(var a=new OpenLayers.Bounds,b=0,c=this.markers.length;b<c;b++)a.extend(this.markers[b].lonlat);return a},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(a,b){this.direction=a;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[b])},trigger:function(){var a=OpenLayers.Function.bind(function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-a("h"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16404 break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,a("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-a("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(a("w"),0)}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Format.CSWGetDomain=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetDomain.DEFAULTS),b=OpenLayers.Format.CSWGetDomain["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSWGetDomain version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetDomain.DEFAULTS={version:"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16405 a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{csw:{GetDomainResponse:function(a,b){this.readChildNodes(a,b)},DomainValues:function(a,b){OpenLayers.Util.isArray(b.DomainValues)||(b.DomainValues=[]);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;this.readChildNodes(a,d);b.DomainValues.push(d)},PropertyName:function(a,b){b.PropertyName=this.getChildValue(a)},ParameterName:function(a,b){b.ParameterName=this.getChildValue(a)},ListOfValues:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16406 b){OpenLayers.Util.isArray(b.ListOfValues)||(b.ListOfValues=[]);this.readChildNodes(a,b.ListOfValues)},Value:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.push({Value:d})},ConceptualScheme:function(a,b){b.ConceptualScheme={};this.readChildNodes(a,b.ConceptualScheme)},Name:function(a,b){b.Name=this.getChildValue(a)},Document:function(a,b){b.Document=this.getChildValue(a)},Authority:function(a,b){b.Authority=this.getChildValue(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16407 RangeOfValues:function(a,b){b.RangeOfValues={};this.readChildNodes(a,b.RangeOfValues)},MinValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MinValue=d},MaxValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MaxValue=d}}},write:function(a){a=this.writeNode("csw:GetDomain",a);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{csw:{GetDomain:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16408 this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(a.PropertyName||this.PropertyName)this.writeNode("csw:PropertyName",a.PropertyName||this.PropertyName,b);else if(a.ParameterName||this.ParameterName)this.writeNode("csw:ParameterName",a.ParameterName||this.ParameterName,b);this.readChildNodes(b,a);return b},PropertyName:function(a){return this.createElementNSPlus("csw:PropertyName",{value:a})},ParameterName:function(a){return this.createElementNSPlus("csw:ParameterName",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16409 {value:a})}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{read:function(a){return(new OpenLayers.Format.ArcXML).read(a).features.feature}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{DEFAULTS:{tolerance:10,node:!0,edge:!0,vertex:!0},greedy:!0,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.layer&&this.setLayer(this.options.layer);a=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(a,this.DEFAULTS);this.setTargets(this.options.targets);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16410 0===this.targets.length&&this.layer&&this.addTargetLayer(this.layer);this.geoToleranceCache={}},setLayer:function(a){this.active?(this.deactivate(),this.layer=a,this.activate()):this.layer=a},setTargets:function(a){this.targets=[];if(a&&a.length)for(var b,c=0,d=a.length;c<d;++c)b=a[c],b instanceof OpenLayers.Layer.Vector?this.addTargetLayer(b):this.addTarget(b)},addTargetLayer:function(a){this.addTarget({layer:a})},addTarget:function(a){a=OpenLayers.Util.applyDefaults(a,this.defaults);a.nodeTolerance=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16411 a.nodeTolerance||a.tolerance;a.vertexTolerance=a.vertexTolerance||a.tolerance;a.edgeTolerance=a.edgeTolerance||a.tolerance;this.targets.push(a)},removeTargetLayer:function(a){for(var b,c=this.targets.length-1;0<=c;--c)b=this.targets[c],b.layer===a&&this.removeTarget(b)},removeTarget:function(a){return OpenLayers.Util.removeItem(this.targets,a)},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a&&this.layer&&this.layer.events)this.layer.events.on({sketchstarted:this.onSketchModified,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16412 sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer&&this.layer.events&&this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});this.point=this.feature=null;return a},onSketchModified:function(a){this.feature=a.feature;this.considerSnapping(a.vertex,a.vertex)},onVertexModified:function(a){this.feature=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16413 a.feature;var b=this.layer.map.getLonLatFromViewPortPx(a.pixel);this.considerSnapping(a.vertex,new OpenLayers.Geometry.Point(b.lon,b.lat))},considerSnapping:function(a,b){for(var c={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null},d=!1,e,f,g=0,h=this.targets.length;g<h;++g)if(f=this.targets[g],e=this.testTarget(f,b))if(this.greedy){c=e;c.target=f;d=!0;break}else if(e.rank<c.rank||e.rank===c.rank&&e.dist<c.dist)c=e,c.target=f,d=!0;d&&(!1!==this.events.triggerEvent("beforesnap",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16414 {point:a,x:c.x,y:c.y,distance:c.dist,layer:c.target.layer,snapType:this.precedence[c.rank]})?(a.x=c.x,a.y=c.y,this.point=a,this.events.triggerEvent("snap",{point:a,snapType:this.precedence[c.rank],layer:c.target.layer,distance:c.dist})):d=!1);this.point&&!d&&(a.x=b.x,a.y=b.y,this.point=null,this.events.triggerEvent("unsnap",{point:a}))},testTarget:function(a,b){var c=this.layer.map.getResolution();if("minResolution"in a&&c<a.minResolution||"maxResolution"in a&&c>=a.maxResolution)return null;for(var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16415 {node:this.getGeoTolerance(a.nodeTolerance,c),vertex:this.getGeoTolerance(a.vertexTolerance,c),edge:this.getGeoTolerance(a.edgeTolerance,c)},d=Math.max(c.node,c.vertex,c.edge),e={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY},f=!1,g=a.layer.features,h,i,j,k,l,m,n=this.precedence.length,o=new OpenLayers.LonLat(b.x,b.y),p=0,q=g.length;p<q;++p)if(h=g[p],h!==this.feature&&(!h._sketch&&h.state!==OpenLayers.State.DELETE&&(!a.filter||a.filter.evaluate(h)))&&h.atPoint(o,d,d))for(var r=0,s=Math.min(e.rank+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16416 1,n);r<s;++r)if(i=this.precedence[r],a[i])if("edge"===i){if(j=h.geometry.distanceTo(b,{details:!0}),l=j.distance,l<=c[i]&&l<e.dist){e={rank:r,dist:l,x:j.x0,y:j.y0};f=!0;break}}else{j=h.geometry.getVertices("node"===i);m=!1;for(var t=0,u=j.length;t<u;++t)if(k=j[t],l=k.distanceTo(b),l<=c[i]&&(r<e.rank||r===e.rank&&l<e.dist))e={rank:r,dist:l,x:k.x,y:k.y},m=f=!0;if(m)break}return f?e:null},getGeoTolerance:function(a,b){b!==this.resolution&&(this.resolution=b,this.geoToleranceCache={});var c=this.geoToleranceCache[a];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16417 void 0===c&&(c=a*b,this.geoToleranceCache[a]=c);return c},destroy:function(){this.active&&this.deactivate();delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Date={toISOString:function(){if("toISOString"in Date.prototype)return function(a){return a.toISOString()};var a=function(a,c){for(var d=a+"";d.length<c;)d="0"+d;return d};return function(b){return isNaN(b.getTime())?"Invalid Date":b.getUTCFullYear()+"-"+a(b.getUTCMonth()+1,2)+"-"+a(b.getUTCDate(),2)+"T"+a(b.getUTCHours(),2)+":"+a(b.getUTCMinutes(),2)+":"+a(b.getUTCSeconds(),2)+"."+a(b.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/))&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16418 (a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,b=new Date(b.getTime()+-1E3*(60*60*c+60*a)))}}else b=new Date("invalid");return b}};(function(){function a(){this._object=f&&!i?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&(f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/))&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16419 (e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(i){}try{a.statusText=a._object.statusText}catch(r){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,i=h&&window.navigator.userAgent.match(/MSIE 7.0/);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16420 b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,i,m,n){delete this._headers;arguments.length<3&&(i=true);this._async=i;var o=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16421 this,p=this.readyState,q;if(h&&i){q=function(){if(p!=b.DONE){e(o);o.abort()}};window.attachEvent("onunload",q)}b.onopen&&b.onopen.apply(this,arguments);arguments.length>4?this._object.open(a,f,i,m,n):arguments.length>3?this._object.open(a,f,i,m):this._object.open(a,f,i);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||i){o.readyState=o._object.readyState;d(o);if(o._aborted)o.readyState=b.UNSENT;else{if(o.readyState==b.DONE){delete o._data;e(o);h&&i&&window.detachEvent("onunload",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16422 q)}p!=o.readyState&&c(o);p=o.readyState}}}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);if(a&&a.nodeType){a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml;this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml")}this._data=a;a:{this._object.send(this._data);if(g&&!this._async){this.readyState=b.OPENED;for(d(this);this.readyState<b.DONE;){this.readyState++;c(this);if(this._aborted)break a}}}};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16423 b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);if(this.readyState>b.UNSENT)this._aborted=true;this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){if(!this._headers)this._headers={};this._headers[a]=b;return this._object.setRequestHeader(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16424 b)};b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)break;e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16425 initEvent:function(){}};a.type=="readystatechange"&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]==a.type&&!c[2]&&(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16426 b[4]);delete a.__func});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16427 {trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/,kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/,straightBracket:/\$\[(.*?)\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16428 (a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16429 b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16430 null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16431 d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var i=32*h,j=this.getElementsByTagNameNS(e,"*","Icon")[0];if(j){var k=this.parseProperty(j,"*","href");if(k){var l=this.parseProperty(j,"*","w"),m=this.parseProperty(j,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16432 "*","h");OpenLayers.String.startsWith(k,"http://maps.google.com/mapfiles/kml")&&(!l&&!m)&&(m=l=64,h/=2);l=l||m;m=m||l;l&&(d=parseInt(l)*h);m&&(i=parseInt(m)*h);if(m=k.match(this.regExes.kmlIconPalette))l=m[1],m=m[2],k=this.parseProperty(j,"*","x"),j=this.parseProperty(j,"*","y"),k="http://maps.google.com/mapfiles/kml/pal"+l+"/icon"+(8*(j?7-j/32:7)+(k?k/32:0))+m;b.graphicOpacity=1;b.externalGraphic=k}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])k=parseFloat(e.getAttribute("x")),j=parseFloat(e.getAttribute("y")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16433 l=e.getAttribute("xunits"),"pixels"==l?b.graphicXOffset=-k*h:"insetPixels"==l?b.graphicXOffset=-d+k*h:"fraction"==l&&(b.graphicXOffset=-d*k),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-i+j*h+1:"insetPixels"==e?b.graphicYOffset=-(j*h)+1:"fraction"==e&&(b.graphicYOffset=-i*(1-j)+1);b.graphicWidth=d;b.graphicHeight=i;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16434 "*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);if((a=a.getAttribute("id"))&&b)b.id=a;return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var i=f[g],j=this.parseProperty(i,"*","key");(i=this.parseProperty(i,"*","styleUrl"))&&"normal"==j&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16435 "")+i])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];if(h&&(h=this.parseStyle(h)))g.style=OpenLayers.Util.extend(g.style,h)}if(this.extractTracks){if((f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length)g={features:[],feature:g},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16436 this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)}else c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16437 f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16438 i,e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;i=c.points[e];h.geometry=i;"z"in i&&(h.attributes.altitude=i.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes){i=0;for(var j=this.trackAttributes.length;i<j;++i)h.attributes[d]=c.attributes[this.trackAttributes[i]][e]}h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(i=c.angles[e],h.attributes.heading=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16439 parseFloat(i[0]),h.attributes.tilt=parseFloat(i[1]),h.attributes.roll=parseFloat(i[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16440 c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16441 a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),a=[];if(0<b.length)var c=b[0].firstChild.nodeValue,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16442 c=c.replace(this.regExes.removeSpace,""),a=c.split(",");b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,i=0;i<e;++i)if(g=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16443 d[i].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[i]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[i];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing"),b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16444 b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=this.parseGeometry[(a.prefix?a.nodeName.split(":")[1]:a.nodeName).toLowerCase()])&&c.push(b.apply(this,[a]));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));for(var d,e,f,a=a.childNodes,c=0,g=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16445 a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16446 var h={},i=e.getElementsByTagName("value");i.length&&(h.value=this.getChildValue(i[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d,a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16447 null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16448 (b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name");b.appendChild(this.createTextNode(a.style&&a.style.label?a.style.label:a.attributes.name||a.id));var c=this.createElementNS(this.kmlns,"description");c.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));var d=this.createElementNS(this.kmlns,"Placemark");null!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16449 a.fid&&d.setAttribute("id",a.fid);d.appendChild(b);d.appendChild(c);b=this.buildGeometryNode(a.geometry);d.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&d.appendChild(a);return d},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){return this.buildGeometry.collection.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16450 [a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.kmlns,"Polygon"),a=a.components,c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16451 c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.kmlns,"coordinates"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16452 c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),c;for(c in a)if(a[c]&&"name"!=c&&"description"!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16453 c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?null:b},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16454 CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16455 keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16456 this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16457 null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16458 this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);!this.disableFirefoxOverflowHack&&"firefox"==OpenLayers.BROWSER_NAME&&(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16459 a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);!this.autoSize&&!this.size&&this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16460 a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16461 c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class='"+this.contentDisplayClass+"'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16462 null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16463 a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&(null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML)&&(this.contentDiv.innerHTML=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16464 this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16465 OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){var a=a.clone(),b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16466 d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16467 this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a&&(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16468 "padding-top")),this.div.parentNode==document.body))document.body.removeChild(this.div),this.div.style.display="";return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16469 "touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16470 b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16471 scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16472 OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16473 moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);a=this.calculateNewPx(a);OpenLayers.Popup.prototype.moveTo.apply(this,Array(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);this.lonlat&&this.map&&this.moveTo(this.map.getLayerPxFromLonLat(this.lonlat))},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16474 return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){var a=a.offset(this.anchor.offset),b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});/*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16475 Apache 2
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16476
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16477 Contains portions of Rico <http://openrico.org/>
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16479 Copyright 2005 Sabre Airline Solutions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16480
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16481 Licensed under the Apache License, Version 2.0 (the "License"); you
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16482 may not use this file except in compliance with the License. You
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16483 may obtain a copy of the License at
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16484
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16485 http://www.apache.org/licenses/LICENSE-2.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16486
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16487 Unless required by applicable law or agreed to in writing, software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16488 distributed under the License is distributed on an "AS IS" BASIS,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16489 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16490 implied. See the License for the specific language governing
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16491 permissions and limitations under the License.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16492 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16493 OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16494 OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(a,b,c){this.rgb={r:a,g:b,b:c}},setRed:function(a){this.rgb.r=a},setGreen:function(a){this.rgb.g=a},setBlue:function(a){this.rgb.b=a},setHue:function(a){var b=this.asHSB();b.h=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setSaturation:function(a){var b=this.asHSB();b.s=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setBrightness:function(a){var b=this.asHSB();b.b=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16495 darken:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){this.asHSB();return 0.5<this.asHSB().b},isDark:function(){return!this.isBright()},asRGB:function(){return"rgb("+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16496 this.rgb.r+","+this.rgb.g+","+this.rgb.b+")"},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart()},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b)},toString:function(){return this.asHex()}});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16497 OpenLayers.Rico.Color.createFromHex=function(a){if(4==a.length)for(var b=a,a="#",c=1;4>c;c++)a+=b.charAt(c)+b.charAt(c);0==a.indexOf("#")&&(a=a.substring(1));b=a.substring(0,2);c=a.substring(2,4);a=a.substring(4,6);return new OpenLayers.Rico.Color(parseInt(b,16),parseInt(c,16),parseInt(a,16))};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16498 OpenLayers.Rico.Color.createColorFromBackground=function(a){var b=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a),"backgroundColor");return"transparent"==b&&a.parentNode?OpenLayers.Rico.Color.createColorFromBackground(a.parentNode):null==b?new OpenLayers.Rico.Color(255,255,255):0==b.indexOf("rgb(")?(a=b.substring(4,b.length-1).split(","),new OpenLayers.Rico.Color(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))):0==b.indexOf("#")?OpenLayers.Rico.Color.createFromHex(b):new OpenLayers.Rico.Color(255,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16499 255,255)};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16500 OpenLayers.Rico.Color.HSBtoRGB=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=parseInt(255*c+0.5);else{var a=6*(a-Math.floor(a)),g=a-Math.floor(a),h=c*(1-b),i=c*(1-b*g),b=c*(1-b*(1-g));switch(parseInt(a)){case 0:d=255*c+0.5;e=255*b+0.5;f=255*h+0.5;break;case 1:d=255*i+0.5;e=255*c+0.5;f=255*h+0.5;break;case 2:d=255*h+0.5;e=255*c+0.5;f=255*b+0.5;break;case 3:d=255*h+0.5;e=255*i+0.5;f=255*c+0.5;break;case 4:d=255*b+0.5;e=255*h+0.5;f=255*c+0.5;break;case 5:d=255*c+0.5,e=255*h+0.5,f=255*i+0.5}}return{r:parseInt(d),g:parseInt(e),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16501 b:parseInt(f)}};OpenLayers.Rico.Color.RGBtoHSB=function(a,b,c){var d,e=a>b?a:b;c>e&&(e=c);var f=a<b?a:b;c<f&&(f=c);d=0!=e?(e-f)/e:0;if(0==d)a=0;else{var g=(e-a)/(e-f),h=(e-b)/(e-f),c=(e-c)/(e-f),a=(a==e?c-h:b==e?2+g-c:4+h-g)/6;0>a&&(a+=1)}return{h:a,s:d,b:e/255}};OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16502 OpenLayers.Rico.Corner={round:function(a,b){a=OpenLayers.Util.getElement(a);this._setOptions(b);var c=this.options.color;"fromElement"==this.options.color&&(c=this._background(a));var d=this.options.bgColor;"fromParent"==this.options.bgColor&&(d=this._background(a.offsetParent));this._roundCornersImpl(a,c,d)},changeColor:function(a,b){a.style.backgroundColor=b;for(var c=a.parentNode.getElementsByTagName("span"),d=0;d<c.length;d++)c[d].style.backgroundColor=b},changeOpacity:function(a,b){var c="alpha(opacity="+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16503 100*b+")";a.style.opacity=b;a.style.filter=c;for(var d=a.parentNode.getElementsByTagName("span"),e=0;e<d.length;e++)d[e].style.opacity=b,d[e].style.filter=c},reRound:function(a,b){var c=a.parentNode.childNodes[2];a.parentNode.removeChild(a.parentNode.childNodes[0]);a.parentNode.removeChild(c);this.round(a.parentNode,b)},_roundCornersImpl:function(a,b,c){this.options.border&&this._renderBorder(a,c);this._isTopRounded()&&this._roundTopCorners(a,b,c);this._isBottomRounded()&&this._roundBottomCorners(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16504 b,c)},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);a.innerHTML="<div "+("style='border-left: "+c+";"+("border-right: "+c)+"'")+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){for(var d=this._createCorner(c),e=0;e<this.options.numSlices;e++)d.appendChild(this._createCornerSlice(b,c,e,"top"));a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){for(var d=this._createCorner(c),e=this.options.numSlices-1;0<=e;e--)d.appendChild(this._createCornerSlice(b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16505 c,e,"bottom"));a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=this._isTransparent()?"transparent":a;return b},_createCornerSlice:function(a,b,c,d){var e=document.createElement("span"),f=e.style;f.backgroundColor=a;f.display="block";f.height="1px";f.overflow="hidden";f.fontSize="1px";a=this._borderColor(a,b);this.options.border&&0==c?(f.borderTopStyle="solid",f.borderTopWidth="1px",f.borderLeftWidth="0px",f.borderRightWidth=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16506 "0px",f.borderBottomWidth="0px",f.height="0px",f.borderColor=a):a&&(f.borderColor=a,f.borderStyle="solid",f.borderWidth="0px 1px");!this.options.compact&&c==this.options.numSlices-1&&(f.height="2px");this._setMargin(e,c,d);this._setBorder(e,c,d);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:!0,border:!1,compact:!1};OpenLayers.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;this._isTransparent()&&(this.options.blend=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16507 !1)},_whichSideTop:function(){return this._hasString(this.options.corners,"all","top")||0<=this.options.corners.indexOf("tl")&&0<=this.options.corners.indexOf("tr")?"":0<=this.options.corners.indexOf("tl")?"left":0<=this.options.corners.indexOf("tr")?"right":""},_whichSideBottom:function(){return this._hasString(this.options.corners,"all","bottom")||0<=this.options.corners.indexOf("bl")&&0<=this.options.corners.indexOf("br")?"":0<=this.options.corners.indexOf("bl")?"left":0<=this.options.corners.indexOf("br")?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16508 "right":""},_borderColor:function(a,b){return"transparent"==a?b:this.options.border?this.options.border:this.options.blend?this._blend(b,a):""},_setMargin:function(a,b,c){b=this._marginSize(b);c="top"==c?this._whichSideTop():this._whichSideBottom();"left"==c?(a.style.marginLeft=b+"px",a.style.marginRight="0px"):"right"==c?(a.style.marginRight=b+"px",a.style.marginLeft="0px"):(a.style.marginLeft=b+"px",a.style.marginRight=b+"px")},_setBorder:function(a,b,c){b=this._borderSize(b);c="top"==c?this._whichSideTop():
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16509 this._whichSideBottom();"left"==c?(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth="0px"):"right"==c?(a.style.borderRightWidth=b+"px",a.style.borderLeftWidth="0px"):(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px");!1!=this.options.border&&(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px")},_marginSize:function(a){if(this._isTransparent())return 0;var b=[5,3,2,1],c=[3,2,1,0],d=[2,1],e=[1,0];return this.options.compact&&this.options.blend?e[a]:this.options.compact?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16510 d[a]:this.options.blend?c[a]:b[a]},_borderSize:function(a){var b=[5,3,2,1],c=[2,1,1,1],d=[1,0],e=[0,2,0,0];return this.options.compact&&(this.options.blend||this._isTransparent())?1:this.options.compact?d[a]:this.options.blend?c[a]:this.options.border?e[a]:this._isTransparent()?b[a]:0},_hasString:function(a){for(var b=1;b<arguments.length;b++)if(0<=a.indexOf(arguments[b]))return!0;return!1},_blend:function(a,b){var c=OpenLayers.Rico.Color.createFromHex(a);c.blend(OpenLayers.Rico.Color.createFromHex(b));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16511 return c},_background:function(a){try{return OpenLayers.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return"transparent"==this.options.color},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return 1==a.childNodes.length&&3==a.childNodes[0].nodeType}};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Console.warn("AnchoredBubble is deprecated");this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments)},draw:function(a){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16512 this.setOpacity();return this.div},updateRelativePosition:function(){this.setRicoCorners()},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners()},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=a);null!=this.div&&null!=this.contentDiv&&(this.div.style.background="transparent",OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor))},setOpacity:function(a){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16513 a);null!=this.div&&null!=this.groupDiv&&OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity)},setBorder:function(){this.border=0},setRicoCorners:function(){var a={corners:this.getCornersToRound(this.relativePosition),color:this.backgroundColor,bgColor:"transparent",blend:!1};this.rounded?(OpenLayers.Rico.Corner.reRound(this.groupDiv,a),this.setBackgroundColor(),this.setOpacity()):(OpenLayers.Rico.Corner.round(this.div,a),this.rounded=!0)},getCornersToRound:function(){var a=["tl","tr",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16514 "bl","br"],b=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(a,b);return a.join(" ")},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16515 srsName:this.srsName,schema:this.schema},this.formatOptions)));!a.geometryName&&1<parseFloat(this.format.version)&&this.setGeometryName(null)},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16516 c=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",a)]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},setFeatureType:function(a){this.featureType=a;this.format.featureType=a},setGeometryName:function(a){this.geometryName=a;this.format.geometryName=a},handleRead:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);if(b.callback){var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16517 a.priv;200<=c.status&&300>c.status?(c=this.parseResponse(c,b.readOptions))&&!1!==c.success?(b.readOptions&&"object"==b.readOptions.output?OpenLayers.Util.extend(a,c):a.features=c,a.code=OpenLayers.Protocol.Response.SUCCESS):(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseResponse:function(a,b){var c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;if(!c||0>=c.length)return null;c=null!==this.readFormat?this.readFormat.read(c):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16518 this.format.read(c,b);if(!this.featureNS){var d=this.readFormat||this.format;this.featureNS=d.featureNS;d.autoConfig=!1;this.geometryName||this.setGeometryName(d.geometryName)}return c},commit:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:a});c.priv=OpenLayers.Request.POST({url:b.url,headers:b.headers,data:this.format.write(a,b),callback:this.createCallback(this.handleCommit,c,b)});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16519 return c},handleCommit:function(a,b){if(b.callback){var c=a.priv,d=c.responseXML;if(!d||!d.documentElement)d=c.responseText;c=this.format.read(d)||{};a.insertIds=c.insertIds||[];c.success?a.code=OpenLayers.Protocol.Response.SUCCESS:(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c);b.callback.call(b.scope,a)}},filterDelete:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);new OpenLayers.Protocol.Response({requestType:"commit"});var c=this.format.createElementNSPlus("wfs:Transaction",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16520 {attributes:{service:"WFS",version:this.version}}),d=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(b.featureNS?this.featurePrefix+":":"")+b.featureType}});b.featureNS&&d.setAttribute("xmlns:"+this.featurePrefix,b.featureNS);var e=this.format.writeNode("ogc:Filter",a);d.appendChild(e);c.appendChild(d);c=OpenLayers.Format.XML.prototype.write.apply(this.format,[c]);return OpenLayers.Request.POST({url:this.url,callback:b.callback||function(){},data:c})},abort:function(a){a&&a.priv.abort()},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16521 CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:!1,citeCompliant:!1,mouseDown:!1,stoppedDown:null,lastDown:null,lastUp:null,persist:!1,stopDown:!1,stopUp:!1,layerOptions:null,pixelTolerance:5,touch:!1,lastTouchPx:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16522 arguments))return!1;var a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return!0},createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16523 this.layer.addFeatures([this.point],{silent:!0})},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments))return!1;this.cancel();null!=this.layer.map&&(this.destroyFeature(!0),this.layer.destroy(!1));this.layer=null;this.touch=!1;return!0},destroyFeature:function(a){this.layer&&(a||!this.persist)&&this.layer.destroyFeatures();this.point=null},destroyPersistedFeature:function(){var a=this.layer;a&&1<a.features.length&&this.layer.features[0].destroy()},finalize:function(a){this.mouseDown=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16524 !1;this.lastTouchPx=this.lastUp=this.lastDown=null;this.callback(a?"cancel":"done",[this.geometryClone()]);this.destroyFeature(a)},cancel:function(){this.finalize(!0)},click:function(a){OpenLayers.Event.stop(a);return!1},dblclick:function(a){OpenLayers.Event.stop(a);return!1},modifyFeature:function(a){this.point||this.createFeature(a);a=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=a.lon;this.point.geometry.y=a.lat;this.callback("modify",[this.point.geometry,this.point,!1]);this.point.geometry.clearBounds();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16525 this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},getGeometry:function(){var a=this.point&&this.point.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPoint([a]));return a},geometryClone:function(){var a=this.getGeometry();return a&&a.clone()},mousedown:function(a){return this.down(a)},touchstart:function(a){this.touch||(this.touch=!0,this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16526 scope:this}));this.lastTouchPx=a.xy;return this.down(a)},mousemove:function(a){return this.move(a)},touchmove:function(a){this.lastTouchPx=a.xy;return this.move(a)},mouseup:function(a){return this.up(a)},touchend:function(a){a.xy=this.lastTouchPx;return this.up(a)},down:function(a){this.mouseDown=!0;this.lastDown=a.xy;this.touch||this.modifyFeature(a.xy);this.stoppedDown=this.stopDown;return!this.stopDown},move:function(a){!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16527 return!0},up:function(a){this.mouseDown=!1;this.stoppedDown=this.stopDown;return this.checkModifiers(a)&&(!this.lastUp||!this.lastUp.equals(a.xy))&&this.lastDown&&this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)?(this.touch&&this.modifyFeature(a.xy),this.persist&&this.destroyPersistedFeature(),this.lastUp=a.xy,this.finalize(),!this.stopUp):!0},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.stoppedDown=this.stopDown,this.mouseDown=!1)},passesTolerance:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16528 b,c){var d=!0;null!=c&&a&&b&&a.distanceTo(b)>c&&(d=!1);return d},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:!1,freehandToggle:"shiftKey",timerId:null,redoStack:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16529 this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:!0})},destroyFeature:function(a){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,a);this.line=null},destroyPersistedFeature:function(){var a=this.layer;a&&2<a.features.length&&this.layer.features[0].destroy()},removePoint:function(){this.point&&this.layer.removeFeatures([this.point])},addPoint:function(a){this.layer.removeFeatures([this.point]);a=this.layer.getLonLatFromViewPortPx(a);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16530 a.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack},insertXY:function(a,b){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(a,b),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack},insertDeltaXY:function(a,b){var c=this.line.geometry.components[this.getCurrentPointIndex()-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16531 1];c&&(!isNaN(c.x)&&!isNaN(c.y))&&this.insertXY(c.x+a,c.y+b)},insertDirectionLength:function(a,b){var a=a*(Math.PI/180),c=b*Math.cos(a),d=b*Math.sin(a);this.insertDeltaXY(c,d)},insertDeflectionLength:function(a,b){var c=this.getCurrentPointIndex()-1;if(0<c){var d=this.line.geometry.components[c],c=this.line.geometry.components[c-1];this.insertDirectionLength(180*Math.atan2(d.y-c.y,d.x-c.x)/Math.PI+a,b)}},getCurrentPointIndex:function(){return this.line.geometry.components.length-1},undo:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16532 this.line.geometry,b=a.components,c=this.getCurrentPointIndex()-1,b=b[c];if(a=a.removeComponent(b))this.redoStack||(this.redoStack=[]),this.redoStack.push(b),this.drawFeature();return a},redo:function(){var a=this.redoStack&&this.redoStack.pop();a&&(this.line.geometry.addComponent(a,this.getCurrentPointIndex()),this.drawFeature());return!!a},freehandMode:function(a){return this.freehandToggle&&a[this.freehandToggle]?!this.freehand:this.freehand},modifyFeature:function(a,b){this.line||this.createFeature(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16533 var c=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=c.lon;this.point.geometry.y=c.lat;this.callback("modify",[this.point.geometry,this.getSketch(),b]);this.point.geometry.clearBounds();this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.line},getGeometry:function(){var a=this.line&&this.line.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiLineString([a]));return a},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16534 touchstart:function(a){if(this.timerId&&this.passesTolerance(this.lastTouchPx,a.xy,this.doubleTouchTolerance))return this.finishGeometry(),window.clearTimeout(this.timerId),this.timerId=null,!1;this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,a)},down:function(a){var b=this.stopDown;this.freehandMode(a)&&(b=!0,this.touch&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16535 (this.modifyFeature(a.xy,!!this.lastUp),OpenLayers.Event.stop(a)));!this.touch&&(!this.lastDown||!this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance))&&this.modifyFeature(a.xy,!!this.lastUp);this.mouseDown=!0;this.lastDown=a.xy;this.stoppedDown=b;return!b},move:function(a){if(this.stoppedDown&&this.freehandMode(a))return this.persist&&this.destroyPersistedFeature(),this.maxVertices&&this.line&&this.line.geometry.components.length===this.maxVertices?(this.removePoint(),this.finalize()):this.addPoint(a.xy),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16536 !1;!this.touch&&(!this.mouseDown||this.stoppedDown)&&this.modifyFeature(a.xy,!!this.lastUp);return!0},up:function(a){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(a.xy)))this.stoppedDown&&this.freehandMode(a)?(this.persist&&this.destroyPersistedFeature(),this.removePoint(),this.finalize()):this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)&&(this.touch&&this.modifyFeature(a.xy),null==this.lastUp&&this.persist&&this.destroyPersistedFeature(),this.addPoint(a.xy),this.lastUp=a.xy,this.line.geometry.components.length===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16537 this.maxVertices+1&&this.finishGeometry());this.stoppedDown=this.stopDown;this.mouseDown=!1;return!this.stopUp},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-1]);this.removePoint();this.finalize()},dblclick:function(a){this.freehandMode(a)||this.finishGeometry();return!1},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Spherical=OpenLayers.Spherical||{};OpenLayers.Spherical.DEFAULT_RADIUS=6378137;OpenLayers.Spherical.computeDistanceBetween=function(a,b,c){var c=c||OpenLayers.Spherical.DEFAULT_RADIUS,d=Math.sin(Math.PI*(b.lon-a.lon)/360),e=Math.sin(Math.PI*(b.lat-a.lat)/360),a=e*e+d*d*Math.cos(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180);return 2*c*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16538 OpenLayers.Spherical.computeHeading=function(a,b){var c=Math.sin(Math.PI*(a.lon-b.lon)/180)*Math.cos(Math.PI*b.lat/180),d=Math.cos(Math.PI*a.lat/180)*Math.sin(Math.PI*b.lat/180)-Math.sin(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180)*Math.cos(Math.PI*(a.lon-b.lon)/180);return 180*Math.atan2(c,d)/Math.PI};OpenLayers.Control.CacheWrite=OpenLayers.Class(OpenLayers.Control,{layers:null,imageFormat:"image/png",quotaRegEx:/quota/i,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.on({tileloadstart:this.makeSameOrigin,tileloaded:this.cache,scope:this})},removeLayer:function(a){a.layer.events.un({tileloadstart:this.makeSameOrigin,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16539 tileloaded:this.cache,scope:this})},makeSameOrigin:function(a){if(this.active&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&!a.crossOriginKeyword&&"data:"!==a.url.substr(0,5))){var b=OpenLayers.Request.makeSameOrigin(a.url,OpenLayers.ProxyHost);OpenLayers.Control.CacheWrite.urlMap[b]=a.url;a.url=b}},cache:function(a){if(this.active&&window.localStorage&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&"data:"!==a.url.substr(0,5)))try{var b=a.getCanvasContext();if(b){var c=OpenLayers.Control.CacheWrite.urlMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16540 window.localStorage.setItem("olCache_"+(c[a.url]||a.url),b.canvas.toDataURL(this.imageFormat));delete c[a.url]}}catch(d){(b=d.name||d.message)&&this.quotaRegEx.test(b)?this.events.triggerEvent("cachefull",{tile:a}):OpenLayers.Console.error(d.toString())}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16541 arguments)},CLASS_NAME:"OpenLayers.Control.CacheWrite"});OpenLayers.Control.CacheWrite.clearCache=function(){if(window.localStorage){var a,b;for(a=window.localStorage.length-1;0<=a;--a)b=window.localStorage.key(a),"olCache_"===b.substr(0,8)&&window.localStorage.removeItem(b)}};OpenLayers.Control.CacheWrite.urlMap={};OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);if(b&&b.map)if(this.context=c,b.map instanceof OpenLayers.Map)c=this.mergeContextToMap(c,b.map);else{var d=b.map;if(OpenLayers.Util.isElement(d)||"string"==typeof d)d={div:d};c=this.contextToMap(c,d)}return c},getLayerFromContext:function(a){var b,c,d={queryable:a.queryable,visibility:a.visibility,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16542 maxExtent:a.maxExtent,metadata:OpenLayers.Util.applyDefaults(a.metadata,{styles:a.styles,formats:a.formats,"abstract":a["abstract"],dataURL:a.dataURL}),numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.tileSize?new OpenLayers.Size(a.tileSize.width,a.tileSize.height):void 0,minScale:a.minScale||a.maxScaleDenominator,maxScale:a.maxScale||a.minScaleDenominator,srs:a.srs,dimensions:a.dimensions,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16543 metadataURL:a.metadataURL};this.layerOptions&&OpenLayers.Util.applyDefaults(d,this.layerOptions);var e={layers:a.name,transparent:a.transparent,version:a.version};if(a.formats&&0<a.formats.length){e.format=a.formats[0].value;b=0;for(c=a.formats.length;b<c;b++){var f=a.formats[b];if(!0==f.current){e.format=f.value;break}}}if(a.styles&&0<a.styles.length){b=0;for(c=a.styles.length;b<c;b++)if(f=a.styles[b],!0==f.current){f.href?e.sld=f.href:f.body?e.sld_body=f.body:e.styles=f.name;break}}this.layerParams&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16544 OpenLayers.Util.applyDefaults(e,this.layerParams);b=null;c=a.service;c==OpenLayers.Format.Context.serviceTypes.WFS?(d.strategies=[new OpenLayers.Strategy.BBOX],d.protocol=new OpenLayers.Protocol.WFS({url:a.url,featurePrefix:a.name.split(":")[0],featureType:a.name.split(":").pop()}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.KML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.KML}),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16545 b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.GML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.GML}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):a.features?(b=new OpenLayers.Layer.Vector(a.title||a.name,d),b.addFeatures(a.features)):!0!==a.categoryLayer&&(b=new OpenLayers.Layer.WMS(a.title||a.name,a.url,e,d));return b},getLayersFromContext:function(a){for(var b=[],c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16546 0,d=a.length;c<d;c++){var e=this.getLayerFromContext(a[c]);null!==e&&b.push(e)}return b},contextToMap:function(a,b){b=OpenLayers.Util.applyDefaults({maxExtent:a.maxExtent,projection:a.projection,units:a.units},b);b.maxExtent&&(b.maxResolution=b.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH);b.metadata={contactInformation:a.contactInformation,"abstract":a["abstract"],keywords:a.keywords,logo:a.logo,descriptionURL:a.descriptionURL};var c=new OpenLayers.Map(b);c.addLayers(this.getLayersFromContext(a.layersContext));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16547 c.setCenter(a.bounds.getCenterLonLat(),c.getZoomForExtent(a.bounds,!0));return c},mergeContextToMap:function(a,b){b.addLayers(this.getLayersFromContext(a.layersContext));return b},write:function(a,b){a=this.toContext(a);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments)},CLASS_NAME:"OpenLayers.Format.Context"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16548 OpenLayers.Format.Context.serviceTypes={WMS:"urn:ogc:serviceType:WMS",WFS:"urn:ogc:serviceType:WFS",WCS:"urn:ogc:serviceType:WCS",GML:"urn:ogc:serviceType:GML",SLD:"urn:ogc:serviceType:SLD",FES:"urn:ogc:serviceType:FES",KML:"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(a){var b=this.getParser(),c={queryable:a.queryable,visibility:a.visibility,name:a.params.LAYERS,title:a.name,"abstract":a.metadata["abstract"],dataURL:a.metadata.dataURL,metadataURL:a.metadataURL,server:{version:a.params.VERSION,url:a.url},maxExtent:a.maxExtent,transparent:a.params.TRANSPARENT,numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:1==a.opacity?void 0:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16549 a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.singleTile||!a.tileSize?void 0:{width:a.tileSize.w,height:a.tileSize.h},minScale:a.options.resolutions||a.options.scales||a.options.maxResolution||a.options.minScale?a.minScale:void 0,maxScale:a.options.resolutions||a.options.scales||a.options.minResolution||a.options.maxScale?a.maxScale:void 0,formats:[],styles:[],srs:a.srs,dimensions:a.dimensions};a.metadata.servertitle&&(c.server.title=a.metadata.servertitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16550 if(a.metadata.formats&&0<a.metadata.formats.length)for(var d=0,e=a.metadata.formats.length;d<e;d++){var f=a.metadata.formats[d];c.formats.push({value:f.value,current:f.value==a.params.FORMAT})}else c.formats.push({value:a.params.FORMAT,current:!0});if(a.metadata.styles&&0<a.metadata.styles.length){d=0;for(e=a.metadata.styles.length;d<e;d++)b=a.metadata.styles[d],b.current=b.href==a.params.SLD||b.body==a.params.SLD_BODY||b.name==a.params.STYLES?!0:!1,c.styles.push(b)}else c.styles.push({href:a.params.SLD,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16551 body:a.params.SLD_BODY,name:a.params.STYLES||b.defaultStyleName,title:b.defaultStyleTitle,current:!0});return c},toContext:function(a){var b={},c=a.layers;if("OpenLayers.Map"==a.CLASS_NAME){var d=a.metadata||{};b.size=a.getSize();b.bounds=a.getExtent();b.projection=a.projection;b.title=a.title;b.keywords=d.keywords;b["abstract"]=d["abstract"];b.logo=d.logo;b.descriptionURL=d.descriptionURL;b.contactInformation=d.contactInformation;b.maxExtent=a.maxExtent}else OpenLayers.Util.applyDefaults(b,a),void 0!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16552 b.layers&&delete b.layers;void 0==b.layersContext&&(b.layersContext=[]);if(void 0!=c&&OpenLayers.Util.isArray(c)){a=0;for(d=c.length;a<d;a++){var e=c[a];e instanceof OpenLayers.Layer.WMS&&b.layersContext.push(this.layerToContext(e))}}return b},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(a){var b=null;if(null==a)b=this.namespaces[this.defaultPrefix];else for(b in this.namespaces)if(this.namespaces[b]==a)break;return b},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16553 defaultStyleTitle:"Default",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=a.documentElement;this.rootPrefix=a.prefix;var b={version:a.getAttribute("version")};this.runChildNodes(b,a);return b},runChildNodes:function(a,b){for(var c=b.childNodes,d,e,f,g=0,h=c.length;g<h;++g)d=c[g],1==d.nodeType&&(e=this.getNamespacePrefix(d.namespaceURI),f=d.nodeName.split(":").pop(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16554 (e=this["read_"+e+"_"+f])&&e.apply(this,[a,d]))},read_wmc_General:function(a,b){this.runChildNodes(a,b)},read_wmc_BoundingBox:function(a,b){a.projection=b.getAttribute("SRS");a.bounds=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"))},read_wmc_LayerList:function(a,b){a.layersContext=[];this.runChildNodes(a,b)},read_wmc_Layer:function(a,b){var c={visibility:"1"!=b.getAttribute("hidden"),queryable:"1"==b.getAttribute("queryable"),formats:[],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16555 styles:[],metadata:{}};this.runChildNodes(c,b);a.layersContext.push(c)},read_wmc_Extension:function(a,b){this.runChildNodes(a,b)},read_ol_units:function(a,b){a.units=this.getChildValue(b)},read_ol_maxExtent:function(a,b){var c=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"));a.maxExtent=c},read_ol_transparent:function(a,b){a.transparent=this.getChildValue(b)},read_ol_numZoomLevels:function(a,b){a.numZoomLevels=parseInt(this.getChildValue(b))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16556 read_ol_opacity:function(a,b){a.opacity=parseFloat(this.getChildValue(b))},read_ol_singleTile:function(a,b){a.singleTile="true"==this.getChildValue(b)},read_ol_tileSize:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height")};a.tileSize=c},read_ol_isBaseLayer:function(a,b){a.isBaseLayer="true"==this.getChildValue(b)},read_ol_displayInLayerSwitcher:function(a,b){a.displayInLayerSwitcher="true"==this.getChildValue(b)},read_wmc_Server:function(a,b){a.version=b.getAttribute("version");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16557 a.url=this.getOnlineResource_href(b);a.metadata.servertitle=b.getAttribute("title")},read_wmc_FormatList:function(a,b){this.runChildNodes(a,b)},read_wmc_Format:function(a,b){var c={value:this.getChildValue(b)};"1"==b.getAttribute("current")&&(c.current=!0);a.formats.push(c)},read_wmc_StyleList:function(a,b){this.runChildNodes(a,b)},read_wmc_Style:function(a,b){var c={};this.runChildNodes(c,b);"1"==b.getAttribute("current")&&(c.current=!0);a.styles.push(c)},read_wmc_SLD:function(a,b){this.runChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16558 b)},read_sld_StyledLayerDescriptor:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_sld_FeatureTypeStyle:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_wmc_OnlineResource:function(a,b){a.href=this.getAttributeNS(b,this.namespaces.xlink,"href")},read_wmc_Name:function(a,b){var c=this.getChildValue(b);c&&(a.name=c)},read_wmc_Title:function(a,b){var c=this.getChildValue(b);c&&(a.title=c)},read_wmc_MetadataURL:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16559 b){a.metadataURL=this.getOnlineResource_href(b)},read_wmc_KeywordList:function(a,b){a.keywords=[];this.runChildNodes(a.keywords,b)},read_wmc_Keyword:function(a,b){a.push(this.getChildValue(b))},read_wmc_Abstract:function(a,b){var c=this.getChildValue(b);c&&(a["abstract"]=c)},read_wmc_LogoURL:function(a,b){a.logo={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),href:this.getOnlineResource_href(b)}},read_wmc_DescriptionURL:function(a,b){a.descriptionURL=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16560 this.getOnlineResource_href(b)},read_wmc_ContactInformation:function(a,b){var c={};this.runChildNodes(c,b);a.contactInformation=c},read_wmc_ContactPersonPrimary:function(a,b){var c={};this.runChildNodes(c,b);a.personPrimary=c},read_wmc_ContactPerson:function(a,b){var c=this.getChildValue(b);c&&(a.person=c)},read_wmc_ContactOrganization:function(a,b){var c=this.getChildValue(b);c&&(a.organization=c)},read_wmc_ContactPosition:function(a,b){var c=this.getChildValue(b);c&&(a.position=c)},read_wmc_ContactAddress:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16561 b){var c={};this.runChildNodes(c,b);a.contactAddress=c},read_wmc_AddressType:function(a,b){var c=this.getChildValue(b);c&&(a.type=c)},read_wmc_Address:function(a,b){var c=this.getChildValue(b);c&&(a.address=c)},read_wmc_City:function(a,b){var c=this.getChildValue(b);c&&(a.city=c)},read_wmc_StateOrProvince:function(a,b){var c=this.getChildValue(b);c&&(a.stateOrProvince=c)},read_wmc_PostCode:function(a,b){var c=this.getChildValue(b);c&&(a.postcode=c)},read_wmc_Country:function(a,b){var c=this.getChildValue(b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16562 c&&(a.country=c)},read_wmc_ContactVoiceTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.phone=c)},read_wmc_ContactFacsimileTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.fax=c)},read_wmc_ContactElectronicMailAddress:function(a,b){var c=this.getChildValue(b);c&&(a.email=c)},read_wmc_DataURL:function(a,b){a.dataURL=this.getOnlineResource_href(b)},read_wmc_LegendURL:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16563 href:this.getOnlineResource_href(b)};a.legend=c},read_wmc_DimensionList:function(a,b){a.dimensions={};this.runChildNodes(a.dimensions,b)},read_wmc_Dimension:function(a,b){var c={name:b.getAttribute("name").toLowerCase(),units:b.getAttribute("units")||"",unitSymbol:b.getAttribute("unitSymbol")||"",userValue:b.getAttribute("userValue")||"",nearestValue:"1"===b.getAttribute("nearestValue"),multipleValues:"1"===b.getAttribute("multipleValues"),current:"1"===b.getAttribute("current"),"default":b.getAttribute("default")||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16564 ""},d=this.getChildValue(b);c.values=d.split(",");a[c.name]=c},write:function(a,b){var c=this.createElementDefaultNS("ViewContext");this.setAttributes(c,{version:this.VERSION,id:b&&"string"==typeof b.id?b.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);c.appendChild(this.write_wmc_General(a));c.appendChild(this.write_wmc_LayerList(a));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},createElementDefaultNS:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16565 b,c){a=this.createElementNS(this.namespaces[this.defaultPrefix],a);b&&a.appendChild(this.createTextNode(b));c&&this.setAttributes(a,c);return a},setAttributes:function(a,b){var c,d;for(d in b)c=b[d].toString(),c.match(/[A-Z]/)?this.setAttributeNS(a,null,d,c):a.setAttribute(d,c)},write_wmc_General:function(a){var b=this.createElementDefaultNS("General");a.size&&b.appendChild(this.createElementDefaultNS("Window",null,{width:a.size.w,height:a.size.h}));var c=a.bounds;b.appendChild(this.createElementDefaultNS("BoundingBox",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16566 null,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),maxy:c.top.toPrecision(18),SRS:a.projection}));b.appendChild(this.createElementDefaultNS("Title",a.title));a.keywords&&b.appendChild(this.write_wmc_KeywordList(a.keywords));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.logo&&b.appendChild(this.write_wmc_URLType("LogoURL",a.logo.href,a.logo));a.descriptionURL&&b.appendChild(this.write_wmc_URLType("DescriptionURL",a.descriptionURL));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16567 a.contactInformation&&b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));b.appendChild(this.write_ol_MapExtension(a));return b},write_wmc_KeywordList:function(a){for(var b=this.createElementDefaultNS("KeywordList"),c=0,d=a.length;c<d;c++)b.appendChild(this.createElementDefaultNS("Keyword",a[c]));return b},write_wmc_ContactInformation:function(a){var b=this.createElementDefaultNS("ContactInformation");a.personPrimary&&b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16568 a.position&&b.appendChild(this.createElementDefaultNS("ContactPosition",a.position));a.contactAddress&&b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));a.phone&&b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",a.phone));a.fax&&b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",a.fax));a.email&&b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",a.email));return b},write_wmc_ContactPersonPrimary:function(a){var b=this.createElementDefaultNS("ContactPersonPrimary");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16569 a.person&&b.appendChild(this.createElementDefaultNS("ContactPerson",a.person));a.organization&&b.appendChild(this.createElementDefaultNS("ContactOrganization",a.organization));return b},write_wmc_ContactAddress:function(a){var b=this.createElementDefaultNS("ContactAddress");a.type&&b.appendChild(this.createElementDefaultNS("AddressType",a.type));a.address&&b.appendChild(this.createElementDefaultNS("Address",a.address));a.city&&b.appendChild(this.createElementDefaultNS("City",a.city));a.stateOrProvince&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16570 b.appendChild(this.createElementDefaultNS("StateOrProvince",a.stateOrProvince));a.postcode&&b.appendChild(this.createElementDefaultNS("PostCode",a.postcode));a.country&&b.appendChild(this.createElementDefaultNS("Country",a.country));return b},write_ol_MapExtension:function(a){var b=this.createElementDefaultNS("Extension");if(a=a.maxExtent){var c=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(c,{minx:a.left.toPrecision(18),miny:a.bottom.toPrecision(18),maxx:a.right.toPrecision(18),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16571 maxy:a.top.toPrecision(18)});b.appendChild(c)}return b},write_wmc_LayerList:function(a){for(var b=this.createElementDefaultNS("LayerList"),c=0,d=a.layersContext.length;c<d;++c)b.appendChild(this.write_wmc_Layer(a.layersContext[c]));return b},write_wmc_Layer:function(a){var b=this.createElementDefaultNS("Layer",null,{queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1"});b.appendChild(this.write_wmc_Server(a));b.appendChild(this.createElementDefaultNS("Name",a.name));b.appendChild(this.createElementDefaultNS("Title",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16572 a.title));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.dataURL&&b.appendChild(this.write_wmc_URLType("DataURL",a.dataURL));a.metadataURL&&b.appendChild(this.write_wmc_URLType("MetadataURL",a.metadataURL));return b},write_wmc_LayerExtension:function(a){var b=this.createElementDefaultNS("Extension"),c=a.maxExtent,d=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(d,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16573 maxy:c.top.toPrecision(18)});b.appendChild(d);a.tileSize&&!a.singleTile&&(c=this.createElementNS(this.namespaces.ol,"ol:tileSize"),this.setAttributes(c,a.tileSize),b.appendChild(c));for(var c="transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(" "),e=0,f=c.length;e<f;++e)(d=this.createOLPropertyNode(a,c[e]))&&b.appendChild(d);return b},createOLPropertyNode:function(a,b){var c=null;null!=a[b]&&(c=this.createElementNS(this.namespaces.ol,"ol:"+b),c.appendChild(this.createTextNode(a[b].toString())));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16574 return c},write_wmc_Server:function(a){var a=a.server,b=this.createElementDefaultNS("Server"),c={service:"OGC:WMS",version:a.version};a.title&&(c.title=a.title);this.setAttributes(b,c);b.appendChild(this.write_wmc_OnlineResource(a.url));return b},write_wmc_URLType:function(a,b,c){a=this.createElementDefaultNS(a);a.appendChild(this.write_wmc_OnlineResource(b));if(c)for(var b=["width","height","format"],d=0;d<b.length;d++)b[d]in c&&a.setAttribute(b[d],c[b[d]]);return a},write_wmc_DimensionList:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16575 this.createElementDefaultNS("DimensionList"),c;for(c in a.dimensions){var d={},e=a.dimensions[c],f;for(f in e)d[f]="boolean"==typeof e[f]?Number(e[f]):e[f];e="";d.values&&(e=d.values.join(","),delete d.values);b.appendChild(this.createElementDefaultNS("Dimension",e,d))}return b},write_wmc_FormatList:function(a){for(var b=this.createElementDefaultNS("FormatList"),c=0,d=a.formats.length;c<d;c++){var e=a.formats[c];b.appendChild(this.createElementDefaultNS("Format",e.value,e.current&&!0==e.current?{current:"1"}:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16576 null))}return b},write_wmc_StyleList:function(a){var b=this.createElementDefaultNS("StyleList");if((a=a.styles)&&OpenLayers.Util.isArray(a))for(var c,d=0,e=a.length;d<e;d++){var f=a[d],g=this.createElementDefaultNS("Style",null,f.current&&!0==f.current?{current:"1"}:null);f.href?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16577 f.legend.href,f.legend)),f=this.write_wmc_OnlineResource(f.href),c.appendChild(f),g.appendChild(c)):f.body?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)),f=OpenLayers.Format.XML.prototype.read.apply(this,[f.body]).documentElement,c.ownerDocument&&c.ownerDocument.importNode&&(f=c.ownerDocument.importNode(f,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16578 !0)),c.appendChild(f),g.appendChild(c)):(g.appendChild(this.createElementDefaultNS("Name",f.name)),g.appendChild(this.createElementDefaultNS("Title",f.title)),f["abstract"]&&g.appendChild(this.createElementDefaultNS("Abstract",f["abstract"])),f.legend&&g.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)));b.appendChild(g)}return b},write_wmc_OnlineResource:function(a){var b=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(b,this.namespaces.xlink,"xlink:type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16579 "simple");this.setAttributeNS(b,this.namespaces.xlink,"xlink:href",a);return b},getOnlineResource_href:function(a){var b={},a=a.getElementsByTagName("OnlineResource");0<a.length&&this.read_wmc_OnlineResource(b,a[0]);return b.href},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);a={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,a)])},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16580 CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16581 addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Kinetic=OpenLayers.Class({threshold:0,deceleration:0.0035,nbPoints:100,delay:200,points:void 0,timerId:void 0,initialize:function(a){OpenLayers.Util.extend(this,a)},begin:function(){OpenLayers.Animation.stop(this.timerId);this.timerId=void 0;this.points=[]},update:function(a){this.points.unshift({xy:a,tick:(new Date).getTime()});this.points.length>this.nbPoints&&this.points.pop()},end:function(a){for(var b,c=(new Date).getTime(),d=0,e=this.points.length,f;d<e;d++){f=this.points[d];if(c-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16582 f.tick>this.delay)break;b=f}if(b&&(d=(new Date).getTime()-b.tick,c=Math.sqrt(Math.pow(a.x-b.xy.x,2)+Math.pow(a.y-b.xy.y,2)),d=c/d,!(0==d||d<this.threshold)))return c=Math.asin((a.y-b.xy.y)/c),b.xy.x<=a.x&&(c=Math.PI-c),{speed:d,theta:c}},move:function(a,b){var c=a.speed,d=Math.cos(a.theta),e=-Math.sin(a.theta),f=(new Date).getTime(),g=0,h=0;this.timerId=OpenLayers.Animation.start(OpenLayers.Function.bind(function(){if(null!=this.timerId){var a=(new Date).getTime()-f,j=-this.deceleration*Math.pow(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16583 2)/2+c*a,k=j*d,j=j*e,l,m;l=!1;0>=-this.deceleration*a+c&&(OpenLayers.Animation.stop(this.timerId),this.timerId=null,l=!0);a=k-g;m=j-h;g=k;h=j;b(a,m,l)}},this))},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:!0,initialize:function(a,b,c){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[a,c]);this.location=b;this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadRSS:function(){this.loaded||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16584 success:this.parseData,scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadRSS()},parseData:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=OpenLayers.Format.XML.prototype.read(a.responseText);if(this.useFeedTitle){a=null;try{a=b.getElementsByTagNameNS("*","title")[0].firstChild.nodeValue}catch(c){a=b.getElementsByTagName("title")[0].firstChild.nodeValue}a&&this.setName(a)}a={};OpenLayers.Util.extend(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16585 this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(a.externalProjection=this.projection,a.internalProjection=this.map.getProjectionObject());for(var b=(new OpenLayers.Format.GeoRSS(a)).read(b),a=0,d=b.length;a<d;a++){var e={},f=b[a];if(f.geometry){var g=f.attributes.title?f.attributes.title:"Untitled",h=f.attributes.description?f.attributes.description:"No description.",i=f.attributes.link?f.attributes.link:"",f=f.geometry.getBounds().getCenterLonLat();e.icon=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16586 null==this.icon?OpenLayers.Marker.defaultIcon():this.icon.clone();e.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(g||h){e.title=g;e.description=h;var j='<div class="olLayerGeoRSSClose">[x]</div>',j=j+'<div class="olLayerGeoRSSTitle">';i&&(j+='<a class="link" href="'+i+'" target="_blank">');j+=g;i&&(j+="</a>");j+="</div>";j+='<div style="" class="olLayerGeoRSSDescription">';j+=h;j+="</div>";e.popupContentHTML=j}f=new OpenLayers.Feature(this,f,e);this.features.push(f);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16587 e=f.createMarker();e.events.register("click",f,this.markerClick);this.addMarker(e)}}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||(b=this.createPopup(),OpenLayers.Event.observe(b.div,"click",OpenLayers.Function.bind(function(){for(var a=0,b=this.layer.map.popups.length;a<b;a++)this.layer.map.removePopup(this.layer.map.popups[a])},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16588 this)),this.layer.map.addPopup(b));OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:!1,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16589 graphicName:"square"},read:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c={namedLayers:!0===b.namedLayersAsArray?[]:{}};this.readChildNodes(a,c);return c},readers:OpenLayers.Util.applyDefaults({sld:{StyledLayerDescriptor:function(a,b){b.version=a.getAttribute("version");this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b.description=this.getChildValue(a)},NamedLayer:function(a,b){var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16590 {userStyles:[],namedStyles:[]};this.readChildNodes(a,c);for(var d=0,e=c.userStyles.length;d<e;++d)c.userStyles[d].layerName=c.name;OpenLayers.Util.isArray(b.namedLayers)?b.namedLayers.push(c):b.namedLayers[c.name]=c},NamedStyle:function(a,b){b.namedStyles.push(this.getChildName(a.firstChild))},UserStyle:function(a,b){var c={defaultsPerSymbolizer:!0,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(a,c);this.multipleSymbolizers?(delete c.defaultsPerSymbolizer,c=new OpenLayers.Style2(c)):c=new OpenLayers.Style(this.defaultSymbolizer,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16591 c);b.userStyles.push(c)},IsDefault:function(a,b){"1"==this.getChildValue(a)&&(b.isDefault=!0)},FeatureTypeStyle:function(a,b){++this.featureTypeCounter;var c={rules:this.multipleSymbolizers?b.rules:[]};this.readChildNodes(a,c);this.multipleSymbolizers||(b.rules=c.rules)},Rule:function(a,b){var c;this.multipleSymbolizers&&(c={symbolizers:[]});c=new OpenLayers.Rule(c);this.readChildNodes(a,c);b.rules.push(c)},ElseFilter:function(a,b){b.elseFilter=!0},MinScaleDenominator:function(a,b){b.minScaleDenominator=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16592 parseFloat(this.getChildValue(a))},MaxScaleDenominator:function(a,b){b.maxScaleDenominator=parseFloat(this.getChildValue(a))},TextSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Text(c))):b.symbolizer.Text=OpenLayers.Util.applyDefaults(c,b.symbolizer.Text)},LabelPlacement:function(a,b){this.readChildNodes(a,b)},PointPlacement:function(a,b){var c={};this.readChildNodes(a,c);c.labelRotation=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16593 c.rotation;delete c.rotation;var d,e=b.labelAnchorPointX,f=b.labelAnchorPointY;e<=1/3?d="l":e>1/3&&e<2/3?d="c":e>=2/3&&(d="r");f<=1/3?d+="b":f>1/3&&f<2/3?d+="m":f>=2/3&&(d+="t");c.labelAlign=d;OpenLayers.Util.applyDefaults(b,c)},AnchorPoint:function(a,b){this.readChildNodes(a,b)},AnchorPointX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointX=c)},AnchorPointY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointY=c)},Displacement:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16594 b){this.readChildNodes(a,b)},DisplacementX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelXOffset=c)},DisplacementY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelYOffset=c)},LinePlacement:function(a,b){this.readChildNodes(a,b)},PerpendicularOffset:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelPerpendicularOffset=c)},Label:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.label=c)},Font:function(a,b){this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16595 b)},Halo:function(a,b){var c={};this.readChildNodes(a,c);b.haloRadius=c.haloRadius;b.haloColor=c.fillColor;b.haloOpacity=c.fillOpacity},Radius:function(a,b){var c=this.readers.ogc._expression.call(this,a);null!=c&&(b.haloRadius=c)},RasterSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c))):b.symbolizer.Raster=OpenLayers.Util.applyDefaults(c,b.symbolizer.Raster)},Geometry:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16596 b){b.geometry={};this.readChildNodes(a,b.geometry)},ColorMap:function(a,b){b.colorMap=[];this.readChildNodes(a,b.colorMap)},ColorMapEntry:function(a,b){var c=a.getAttribute("quantity"),d=a.getAttribute("opacity");b.push({color:a.getAttribute("color"),quantity:null!==c?parseFloat(c):void 0,label:a.getAttribute("label")||void 0,opacity:null!==d?parseFloat(d):void 0})},LineSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Line(c))):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16597 b.symbolizer.Line=OpenLayers.Util.applyDefaults(c,b.symbolizer.Line)},PolygonSymbolizer:function(a,b){var c={fill:!1,stroke:!1};this.multipleSymbolizers||(c=b.symbolizer.Polygon||c);this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c))):b.symbolizer.Polygon=c},PointSymbolizer:function(a,b){var c={fill:!1,stroke:!1,graphic:!1};this.multipleSymbolizers||(c=b.symbolizer.Point||c);this.readChildNodes(a,c);this.multipleSymbolizers?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16598 (c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Point(c))):b.symbolizer.Point=c},Stroke:function(a,b){b.stroke=!0;this.readChildNodes(a,b)},Fill:function(a,b){b.fill=!0;this.readChildNodes(a,b)},CssParameter:function(a,b){var c=a.getAttribute("name"),d=this.cssMap[c];b.label&&("fill"===c?d="fontColor":"fill-opacity"===c&&(d="fontOpacity"));d&&(c=this.readers.ogc._expression.call(this,a))&&(b[d]=c)},Graphic:function(a,b){b.graphic=!0;var c={};this.readChildNodes(a,c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16599 for(var d="stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(" "),e,f,g=0,h=d.length;g<h;++g)e=d[g],f=c[e],void 0!=f&&(b[e]=f);void 0!=c.opacity&&(b.graphicOpacity=c.opacity);void 0!=c.size&&(isNaN(c.size/2)?b.graphicWidth=c.size:b.pointRadius=c.size/2);void 0!=c.href&&(b.externalGraphic=c.href);void 0!=c.rotation&&(b.rotation=c.rotation)},ExternalGraphic:function(a,b){this.readChildNodes(a,b)},Mark:function(a,b){this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16600 b)},WellKnownName:function(a,b){b.graphicName=this.getChildValue(a)},Opacity:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.opacity=c)},Size:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.size=c)},Rotation:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.rotation=c)},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},Format:function(a,b){b.graphicFormat=this.getChildValue(a)}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16601 cssMap:{stroke:"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle",fill:"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(a){var b=null,c;for(c in this.cssMap)if(this.cssMap[c]==a){b=c;break}return b},getGraphicFormat:function(a){var b,c;for(c in this.graphicFormats)if(this.graphicFormats[c].test(a)){b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16602 c;break}return b||this.defaultGraphicFormat},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(a){return this.writers.sld.StyledLayerDescriptor.apply(this,[a])},writers:OpenLayers.Util.applyDefaults({sld:{_OGCExpression:function(a,b){var c=this.createElementNSPlus(a),d="string"==typeof b?b.split("${"):[b];c.appendChild(this.createTextNode(d[0]));for(var e,f,g=1,h=d.length;g<h;g++)e=d[g],f=e.indexOf("}"),0<f?(this.writeNode("ogc:PropertyName",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16603 {property:e.substring(0,f)},c),c.appendChild(this.createTextNode(e.substring(++f)))):c.appendChild(this.createTextNode("${"+e));return c},StyledLayerDescriptor:function(a){var b=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});b.setAttribute("xmlns:ogc",this.namespaces.ogc);b.setAttribute("xmlns:gml",this.namespaces.gml);a.name&&this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16604 this.writeNode("Abstract",a.description,b);if(OpenLayers.Util.isArray(a.namedLayers))for(var c=0,d=a.namedLayers.length;c<d;++c)this.writeNode("NamedLayer",a.namedLayers[c],b);else for(c in a.namedLayers)this.writeNode("NamedLayer",a.namedLayers[c],b);return b},Name:function(a){return this.createElementNSPlus("sld:Name",{value:a})},Title:function(a){return this.createElementNSPlus("sld:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("sld:Abstract",{value:a})},NamedLayer:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16605 this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",a.name,b);if(a.namedStyles)for(var c=0,d=a.namedStyles.length;c<d;++c)this.writeNode("NamedStyle",a.namedStyles[c],b);if(a.userStyles){c=0;for(d=a.userStyles.length;c<d;++c)this.writeNode("UserStyle",a.userStyles[c],b)}return b},NamedStyle:function(a){var b=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",a,b);return b},UserStyle:function(a){var b=this.createElementNSPlus("sld:UserStyle");a.name&&this.writeNode("Name",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16606 a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.isDefault&&this.writeNode("IsDefault",a.isDefault,b);if(this.multipleSymbolizers&&a.rules){for(var c={"0":[]},d=[0],e,f,g,h,i,j=0,k=a.rules.length;j<k;++j)if(e=a.rules[j],e.symbolizers){f={};for(var l=0,m=e.symbolizers.length;l<m;++l)g=e.symbolizers[l],h=g.zIndex,h in f||(i=e.clone(),i.symbolizers=[],f[h]=i),f[h].symbolizers.push(g.clone());for(h in f)h in c||(d.push(h),c[h]=[]),c[h].push(f[h])}else c[0].push(e.clone());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16607 d.sort();j=0;for(k=d.length;j<k;++j)e=c[d[j]],0<e.length&&(i=a.clone(),i.rules=c[d[j]],this.writeNode("FeatureTypeStyle",i,b))}else this.writeNode("FeatureTypeStyle",a,b);return b},IsDefault:function(a){return this.createElementNSPlus("sld:IsDefault",{value:a?"1":"0"})},FeatureTypeStyle:function(a){for(var b=this.createElementNSPlus("sld:FeatureTypeStyle"),c=0,d=a.rules.length;c<d;++c)this.writeNode("Rule",a.rules[c],b);return b},Rule:function(a){var b=this.createElementNSPlus("sld:Rule");a.name&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16608 this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.elseFilter?this.writeNode("ElseFilter",null,b):a.filter&&this.writeNode("ogc:Filter",a.filter,b);void 0!=a.minScaleDenominator&&this.writeNode("MinScaleDenominator",a.minScaleDenominator,b);void 0!=a.maxScaleDenominator&&this.writeNode("MaxScaleDenominator",a.maxScaleDenominator,b);var c,d;if(this.multipleSymbolizers&&a.symbolizers)for(var e=0,f=a.symbolizers.length;e<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16609 f;++e)d=a.symbolizers[e],c=d.CLASS_NAME.split(".").pop(),this.writeNode(c+"Symbolizer",d,b);else for(var f=OpenLayers.Style.SYMBOLIZER_PREFIXES,e=0,g=f.length;e<g;++e)c=f[e],(d=a.symbolizer[c])&&this.writeNode(c+"Symbolizer",d,b);return b},ElseFilter:function(){return this.createElementNSPlus("sld:ElseFilter")},MinScaleDenominator:function(a){return this.createElementNSPlus("sld:MinScaleDenominator",{value:a})},MaxScaleDenominator:function(a){return this.createElementNSPlus("sld:MaxScaleDenominator",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16610 {value:a})},LineSymbolizer:function(a){var b=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",a,b);return b},Stroke:function(a){var b=this.createElementNSPlus("sld:Stroke");void 0!=a.strokeColor&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeColor"},b);void 0!=a.strokeOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeOpacity"},b);void 0!=a.strokeWidth&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeWidth"},b);void 0!=a.strokeDashstyle&&"solid"!==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16611 a.strokeDashstyle&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeDashstyle"},b);void 0!=a.strokeLinecap&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeLinecap"},b);return b},CssParameter:function(a){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(a.key)},value:a.symbolizer[a.key]})},TextSymbolizer:function(a){var b=this.createElementNSPlus("sld:TextSymbolizer");null!=a.label&&this.writeNode("Label",a.label,b);(null!=a.fontFamily||null!=a.fontSize||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16612 null!=a.fontWeight||null!=a.fontStyle)&&this.writeNode("Font",a,b);(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation||null!=a.labelPerpendicularOffset)&&this.writeNode("LabelPlacement",a,b);(null!=a.haloRadius||null!=a.haloColor||null!=a.haloOpacity)&&this.writeNode("Halo",a,b);(null!=a.fontColor||null!=a.fontOpacity)&&this.writeNode("Fill",{fillColor:a.fontColor,fillOpacity:a.fontOpacity},b);return b},LabelPlacement:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16613 this.createElementNSPlus("sld:LabelPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign||null!=a.labelXOffset||null!=a.labelYOffset||null!=a.labelRotation)&&null==a.labelPerpendicularOffset&&this.writeNode("PointPlacement",a,b);null!=a.labelPerpendicularOffset&&this.writeNode("LinePlacement",a,b);return b},LinePlacement:function(a){var b=this.createElementNSPlus("sld:LinePlacement");this.writeNode("PerpendicularOffset",a.labelPerpendicularOffset,b);return b},PerpendicularOffset:function(a){return this.createElementNSPlus("sld:PerpendicularOffset",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16614 {value:a})},PointPlacement:function(a){var b=this.createElementNSPlus("sld:PointPlacement");(null!=a.labelAnchorPointX||null!=a.labelAnchorPointY||null!=a.labelAlign)&&this.writeNode("AnchorPoint",a,b);(null!=a.labelXOffset||null!=a.labelYOffset)&&this.writeNode("Displacement",a,b);null!=a.labelRotation&&this.writeNode("Rotation",a.labelRotation,b);return b},AnchorPoint:function(a){var b=this.createElementNSPlus("sld:AnchorPoint"),c=a.labelAnchorPointX,d=a.labelAnchorPointY;null!=c&&this.writeNode("AnchorPointX",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16615 c,b);null!=d&&this.writeNode("AnchorPointY",d,b);if(null==c&&null==d){var e=a.labelAlign.substr(0,1),a=a.labelAlign.substr(1,1);"l"===e?c=0:"c"===e?c=0.5:"r"===e&&(c=1);"b"===a?d=0:"m"===a?d=0.5:"t"===a&&(d=1);this.writeNode("AnchorPointX",c,b);this.writeNode("AnchorPointY",d,b)}return b},AnchorPointX:function(a){return this.createElementNSPlus("sld:AnchorPointX",{value:a})},AnchorPointY:function(a){return this.createElementNSPlus("sld:AnchorPointY",{value:a})},Displacement:function(a){var b=this.createElementNSPlus("sld:Displacement");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16616 null!=a.labelXOffset&&this.writeNode("DisplacementX",a.labelXOffset,b);null!=a.labelYOffset&&this.writeNode("DisplacementY",a.labelYOffset,b);return b},DisplacementX:function(a){return this.createElementNSPlus("sld:DisplacementX",{value:a})},DisplacementY:function(a){return this.createElementNSPlus("sld:DisplacementY",{value:a})},Font:function(a){var b=this.createElementNSPlus("sld:Font");a.fontFamily&&this.writeNode("CssParameter",{symbolizer:a,key:"fontFamily"},b);a.fontSize&&this.writeNode("CssParameter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16617 {symbolizer:a,key:"fontSize"},b);a.fontWeight&&this.writeNode("CssParameter",{symbolizer:a,key:"fontWeight"},b);a.fontStyle&&this.writeNode("CssParameter",{symbolizer:a,key:"fontStyle"},b);return b},Label:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Label",a)},Halo:function(a){var b=this.createElementNSPlus("sld:Halo");a.haloRadius&&this.writeNode("Radius",a.haloRadius,b);(a.haloColor||a.haloOpacity)&&this.writeNode("Fill",{fillColor:a.haloColor,fillOpacity:a.haloOpacity},b);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16618 return b},Radius:function(a){return this.createElementNSPlus("sld:Radius",{value:a})},RasterSymbolizer:function(a){var b=this.createElementNSPlus("sld:RasterSymbolizer");a.geometry&&this.writeNode("Geometry",a.geometry,b);a.opacity&&this.writeNode("Opacity",a.opacity,b);a.colorMap&&this.writeNode("ColorMap",a.colorMap,b);return b},Geometry:function(a){var b=this.createElementNSPlus("sld:Geometry");a.property&&this.writeNode("ogc:PropertyName",a,b);return b},ColorMap:function(a){for(var b=this.createElementNSPlus("sld:ColorMap"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16619 c=0,d=a.length;c<d;++c)this.writeNode("ColorMapEntry",a[c],b);return b},ColorMapEntry:function(a){var b=this.createElementNSPlus("sld:ColorMapEntry");b.setAttribute("color",a.color);void 0!==a.opacity&&b.setAttribute("opacity",parseFloat(a.opacity));void 0!==a.quantity&&b.setAttribute("quantity",parseFloat(a.quantity));void 0!==a.label&&b.setAttribute("label",a.label);return b},PolygonSymbolizer:function(a){var b=this.createElementNSPlus("sld:PolygonSymbolizer");!1!==a.fill&&this.writeNode("Fill",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16620 a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},Fill:function(a){var b=this.createElementNSPlus("sld:Fill");a.fillColor&&this.writeNode("CssParameter",{symbolizer:a,key:"fillColor"},b);null!=a.fillOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"fillOpacity"},b);return b},PointSymbolizer:function(a){var b=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",a,b);return b},Graphic:function(a){var b=this.createElementNSPlus("sld:Graphic");void 0!=a.externalGraphic?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16621 this.writeNode("ExternalGraphic",a,b):this.writeNode("Mark",a,b);void 0!=a.graphicOpacity&&this.writeNode("Opacity",a.graphicOpacity,b);void 0!=a.pointRadius?this.writeNode("Size",2*a.pointRadius,b):void 0!=a.graphicWidth&&this.writeNode("Size",a.graphicWidth,b);void 0!=a.rotation&&this.writeNode("Rotation",a.rotation,b);return b},ExternalGraphic:function(a){var b=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",a.externalGraphic,b);this.writeNode("Format",a.graphicFormat||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16622 this.getGraphicFormat(a.externalGraphic),b);return b},Mark:function(a){var b=this.createElementNSPlus("sld:Mark");a.graphicName&&this.writeNode("WellKnownName",a.graphicName,b);!1!==a.fill&&this.writeNode("Fill",a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},WellKnownName:function(a){return this.createElementNSPlus("sld:WellKnownName",{value:a})},Opacity:function(a){return this.createElementNSPlus("sld:Opacity",{value:a})},Size:function(a){return this.writers.sld._OGCExpression.call(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16623 "sld:Size",a)},Rotation:function(a){return this.createElementNSPlus("sld:Rotation",{value:a})},OnlineResource:function(a){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":a}})},Format:function(a){return this.createElementNSPlus("sld:Format",{value:a})}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},isBaseLayer:!0,encodeBBOX:!1,noMagic:!1,yx:{},initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);1.3<=parseFloat(c.VERSION)&&!c.EXCEPTIONS&&(c.EXCEPTIONS="INIMAGE");e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16624 if(!this.noMagic&&this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"image/jpeg"==this.params.FORMAT&&(this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},reverseAxisOrder:function(){var a=this.projection.getCode();return 1.3<=parseFloat(this.params.VERSION)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16625 !(!this.yx[a]&&!OpenLayers.Projection.defaults[a].yx)},getURL:function(a){var a=this.adjustBounds(a),b=this.getImageSize(),c={},d=this.reverseAxisOrder();c.BBOX=this.encodeBBOX?a.toBBOX(null,d):a.toArray(d);c.WIDTH=b.w;c.HEIGHT=b.h;return this.getFullRequestString(c)},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(a,b){var c=this.map.getProjectionObject(),c=this.projection&&this.projection.equals(c)?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16626 this.projection.getCode():c.getCode(),c="none"==c?null:c;1.3<=parseFloat(this.params.VERSION)?this.params.CRS=c:this.params.SRS=c;"boolean"==typeof this.params.TRANSPARENT&&(a.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE");return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_sld_MinScaleDenominator:function(a,b){var c=parseFloat(this.getChildValue(b));0<c&&(a.maxScale=c)},read_sld_MaxScaleDenominator:function(a,b){a.minScale=parseFloat(this.getChildValue(b))},read_wmc_SRS:function(a,b){"srs"in
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16627 a||(a.srs={});a.srs[this.getChildValue(b)]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[a]);if(a.maxScale){var c=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));b.appendChild(c)}a.minScale&&(c=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator"),c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),b.appendChild(c));if(a.srs)for(var d in a.srs)b.appendChild(this.createElementDefaultNS("SRS",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16628 d));b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a));return b},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:!0,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},xy:!0,defaultPrefix:"xls",schemaLocation:null,read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{xls:{XLS:function(a,b){b.version=a.getAttribute("version");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16629 this.readChildNodes(a,b)},Response:function(a,b){this.readChildNodes(a,b)},GeocodeResponse:function(a,b){b.responseLists=[];this.readChildNodes(a,b)},GeocodeResponseList:function(a,b){var c={features:[],numberOfGeocodedAddresses:parseInt(a.getAttribute("numberOfGeocodedAddresses"))};b.responseLists.push(c);this.readChildNodes(a,c)},GeocodedAddress:function(a,b){var c=new OpenLayers.Feature.Vector;b.features.push(c);this.readChildNodes(a,c);c.geometry=c.components[0]},GeocodeMatchCode:function(a,b){b.attributes.matchCode=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16630 {accuracy:parseFloat(a.getAttribute("accuracy")),matchType:a.getAttribute("matchType")}},Address:function(a,b){var c={countryCode:a.getAttribute("countryCode"),addressee:a.getAttribute("addressee"),street:[],place:[]};b.attributes.address=c;this.readChildNodes(a,c)},freeFormAddress:function(a,b){b.freeFormAddress=this.getChildValue(a)},StreetAddress:function(a,b){this.readChildNodes(a,b)},Building:function(a,b){b.building={number:a.getAttribute("number"),subdivision:a.getAttribute("subdivision"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16631 buildingName:a.getAttribute("buildingName")}},Street:function(a,b){b.street.push(this.getChildValue(a))},Place:function(a,b){b.place[a.getAttribute("type")]=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)}},gml:OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(a){return this.writers.xls.XLS.apply(this,[a])},writers:{xls:{XLS:function(a){var b=this.createElementNSPlus("xls:XLS",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16632 this.writeNode("RequestHeader",a.header,b);this.writeNode("Request",a,b);return b},RequestHeader:function(){return this.createElementNSPlus("xls:RequestHeader")},Request:function(a){var b=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:a.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",a.addresses,b);return b},GeocodeRequest:function(a){for(var b=this.createElementNSPlus("xls:GeocodeRequest"),c=0,d=a.length;c<d;c++)this.writeNode("Address",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16633 a[c],b);return b},Address:function(a){var b=this.createElementNSPlus("xls:Address",{attributes:{countryCode:a.countryCode}});a.freeFormAddress?this.writeNode("freeFormAddress",a.freeFormAddress,b):(a.street&&this.writeNode("StreetAddress",a,b),a.municipality&&this.writeNode("Municipality",a.municipality,b),a.countrySubdivision&&this.writeNode("CountrySubdivision",a.countrySubdivision,b),a.postalCode&&this.writeNode("PostalCode",a.postalCode,b));return b},freeFormAddress:function(a){return this.createElementNSPlus("freeFormAddress",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16634 {value:a})},StreetAddress:function(a){var b=this.createElementNSPlus("xls:StreetAddress");a.building&&this.writeNode(b,"Building",a.building);a=a.street;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=0,d=a.length;c<d;c++)this.writeNode("Street",a[c],b);return b},Building:function(a){return this.createElementNSPlus("xls:Building",{attributes:{number:a.number,subdivision:a.subdivision,buildingName:a.buildingName}})},Street:function(a){return this.createElementNSPlus("xls:Street",{value:a})},Municipality:function(a){return this.createElementNSPlus("xls:Place",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16635 {attributes:{type:"Municipality"},value:a})},CountrySubdivision:function(a){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:a})},PostalCode:function(a){return this.createElementNSPlus("xls:PostalCode",{value:a})}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16636 "1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16637 "viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16638 this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16639 b,c){var b=b||a._style,c=c||a._options,d=parseFloat(a.getAttributeNS(null,"r")),e=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&d){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicTitle&&(a.setAttributeNS(null,"title",b.graphicTitle),d=a.getElementsByTagName("title"),0<d.length?d[0].firstChild.textContent=b.graphicTitle:(d=this.nodeFactory(null,"title"),d.textContent=b.graphicTitle,a.appendChild(d)));b.graphicWidth&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16640 b.graphicHeight&&a.setAttributeNS(null,"preserveAspectRatio","none");var d=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,d=d?d:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),i=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*d))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",d);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16641 "href",b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+i);a.onclick=OpenLayers.Renderer.SVG.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var d=3*b.pointRadius,g=2*d,j=this.importSymbol(b.graphicName);f=this.getPosition(a);e=3*this.symbolMetrics[j.id][0]/g;h=a.parentNode;i=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(j.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",j.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16642 "width",g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-d);a.setAttributeNS(null,"y",f.y-d);i?h.insertBefore(a,i):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);d=b.rotation;if((void 0!==d||void 0!==a._rotation)&&f)a._rotation=d,d|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+d+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[j.id],a.firstChild.setAttributeNS(null,"transform","rotate("+d+" "+f[1]+" "+f[2]+")"))}c.isFilled?(a.setAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16643 "fill",b.fillColor),a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*e),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,e))):a.setAttributeNS(null,"stroke",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16644 "none");b.pointerEvents&&a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\s+/g,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16645 ",")}},createNode:function(a,b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16646 b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left,b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16647 (a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,i=b.components.length;h<i;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16648 "x",d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16649 f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16650 "font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16651 b.label.split("\n"),i=h.length;f.childNodes.length>i;)f.removeChild(f.lastChild);for(var j=0;j<i;j++){var k=this.nodeFactory(a+d+"_tspan_"+j,"tspan");!0===b.labelSelect&&(k._featureId=a,k._geometry=c,k._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&k.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");k.setAttribute("x",e);if(0==j){var l=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==l&&(l=-0.5);k.setAttribute("dy",l*(i-1)+"em")}else k.setAttribute("dy",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16652 "1em");k.textContent=""===h[j]?" ":h[j];k.parentNode||f.appendChild(k)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16653 d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,i;if(h<-d||h>d)i=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*i;if(c<-e||c>e)i=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*i;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left,a=this.top-a.y/b;return this.inValidRange(c,a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16654 "cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");var a=this.nodeFactory(b,"symbol"),e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),f=[],g,h,i=0;i<d.length;i+=2)g=d[i],h=d[i+1],c.left=Math.min(c.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16655 g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);b||(b=a.target,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16656 b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){a.preventDefault&&a.preventDefault()};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);"0.3.0"===c&&(c=this.defaultVersion);return c},toContext:function(a){var b={};"OpenLayers.Map"==a.CLASS_NAME&&(b.bounds=a.getExtent(),b.maxExtent=a.maxExtent,b.projection=a.projection,b.size=a.getSize(),b.layers=a.layers);return b},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16657 defaultPrefix:"owc",extractAttributes:!0,xy:!0,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:"vector",geometryName:"geometry",nestingLayerLookup:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this)},setNestingPath:function(a){if(a.layersContext)for(var b=0,c=a.layersContext.length;b<c;b++){var d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16658 a.layersContext[b],e=[],f=a.title||"";a.metadata&&a.metadata.nestingPath&&(e=a.metadata.nestingPath.slice());""!=f&&e.push(f);d.metadata.nestingPath=e;d.layersContext&&this.setNestingPath(d)}},decomposeNestingPath:function(a){var b=[];if(OpenLayers.Util.isArray(a)){for(a=a.slice();0<a.length;)b.push(a.slice()),a.pop();b.reverse()}return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16659 b);this.setNestingPath({layersContext:b.layersContext});a=[];this.processLayer(a,b);delete b.layersContext;b.layersContext=a;return b},processLayer:function(a,b){if(b.layersContext)for(var c=0,d=b.layersContext.length;c<d;c++){var e=b.layersContext[c];a.push(e);e.layersContext&&this.processLayer(a,e)}},write:function(a,b){this.nestingLayerLookup={};b=b||{};OpenLayers.Util.applyDefaults(b,a);var c=this.writeNode("OWSContext",b);this.nestingLayerLookup=null;this.setAttributeNS(c,this.namespaces.xsi,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16660 "xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},readers:{kml:{Document:function(a,b){b.features=(new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:!0})).read(a)}},owc:{OWSContext:function(a,b){this.readChildNodes(a,b)},General:function(a,b){this.readChildNodes(a,b)},ResourceList:function(a,b){this.readChildNodes(a,b)},Layer:function(a,b){var c={metadata:{},visibility:"1"!=a.getAttribute("hidden"),queryable:"1"==a.getAttribute("queryable"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16661 opacity:null!=a.getAttribute("opacity")?parseFloat(a.getAttribute("opacity")):null,name:a.getAttribute("name"),categoryLayer:null==a.getAttribute("name"),formats:[],styles:[]};b.layersContext||(b.layersContext=[]);b.layersContext.push(c);this.readChildNodes(a,c)},InlineGeometry:function(a,b){b.features=[];var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember"),d;1<=c.length&&(d=c[0]);d&&d.firstChild&&(c=d.firstChild.nextSibling?d.firstChild.nextSibling:d.firstChild,this.setNamespace("feature",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16662 c.namespaceURI),this.featureType=c.localName||c.nodeName.split(":").pop(),this.readChildNodes(a,b))},Server:function(a,b){if(!b.service&&!b.version||b.service!=OpenLayers.Format.Context.serviceTypes.WMS)b.service=a.getAttribute("service"),b.version=a.getAttribute("version"),this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a);this.readChildNodes(a,b)},Title:function(a,b){b.title=this.getChildValue(a);this.readChildNodes(a,b)},StyleList:function(a,b){this.readChildNodes(a,b.styles)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16663 Style:function(a,b){var c={};b.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={};b.legend=c;this.readChildNodes(a,c)},OnlineResource:function(a,b){b.url=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)}},ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,gml:OpenLayers.Format.GML.v2.prototype.readers.gml,sld:OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{owc:{OWSContext:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16664 this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:a.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",a,b);this.writeNode("ResourceList",a,b);return b},General:function(a){var b=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",a,b);this.writeNode("ows:Title",a.title||"OpenLayers OWSContext",b);return b},ResourceList:function(a){for(var b=this.createElementNSPlus("ResourceList"),c=0,d=a.layers.length;c<d;c++){var e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16665 a.layers[c],f=this.decomposeNestingPath(e.metadata.nestingPath);this.writeNode("_Layer",{layer:e,subPaths:f},b)}return b},Server:function(a){var b=this.createElementNSPlus("Server",{attributes:{version:a.version,service:a.service}});this.writeNode("OnlineResource",a,b);return b},OnlineResource:function(a){return this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":a.url}})},InlineGeometry:function(a){var b=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",a.getDataExtent(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16666 b);for(var c=0,d=a.features.length;c<d;c++)this.writeNode("gml:featureMember",a.features[c],b);return b},StyleList:function(a){for(var b=this.createElementNSPlus("StyleList"),c=0,d=a.length;c<d;c++)this.writeNode("Style",a[c],b);return b},Style:function(a){var b=this.createElementNSPlus("Style");this.writeNode("Name",a,b);this.writeNode("Title",a,b);a.legend&&this.writeNode("LegendURL",a,b);return b},Name:function(a){return this.createElementNSPlus("Name",{value:a.name})},Title:function(a){return this.createElementNSPlus("Title",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16667 {value:a.title})},LegendURL:function(a){var b=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",a.legend,b);return b},_WMS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.params.LAYERS,queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1",opacity:a.hasOwnProperty("opacity")?a.opacity:null}});this.writeNode("ows:Title",a.name,b);this.writeNode("ows:OutputFormat",a.params.FORMAT,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16668 version:a.params.VERSION,url:a.url},b);a.metadata.styles&&0<a.metadata.styles.length&&this.writeNode("StyleList",a.metadata.styles,b);return b},_Layer:function(a){var b,c,d;b=a.layer;c=a.subPaths;d=null;0<c.length?(b=c[0].join("/"),c=b.lastIndexOf("/"),d=this.nestingLayerLookup[b],c=0<c?b.substring(c+1,b.length):b,d||(d=this.createElementNSPlus("Layer"),this.writeNode("ows:Title",c,d),this.nestingLayerLookup[b]=d),a.subPaths.shift(),this.writeNode("_Layer",a,d)):(b instanceof OpenLayers.Layer.WMS?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16669 d=this.writeNode("_WMS",b):b instanceof OpenLayers.Layer.Vector&&(b.protocol instanceof OpenLayers.Protocol.WFS.v1?d=this.writeNode("_WFS",b):b.protocol instanceof OpenLayers.Protocol.HTTP?b.protocol.format instanceof OpenLayers.Format.GML?(b.protocol.format.version="2.1.2",d=this.writeNode("_GML",b)):b.protocol.format instanceof OpenLayers.Format.KML&&(b.protocol.format.version="2.2",d=this.writeNode("_KML",b)):(this.setNamespace("feature",this.featureNS),d=this.writeNode("_InlineGeometry",b))),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16670 b.options.maxScale&&this.writeNode("sld:MinScaleDenominator",b.options.maxScale,d),b.options.minScale&&this.writeNode("sld:MaxScaleDenominator",b.options.minScale,d),this.nestingLayerLookup[b.name]=d);return d},_WFS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.protocol.featurePrefix+":"+a.protocol.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:a.protocol.version,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16671 url:a.protocol.url},b);return b},_InlineGeometry:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("InlineGeometry",a,b);return b},_GML:function(a){var b=this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:a.protocol.url,version:a.protocol.format.version},b);return b},_KML:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16672 this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:a.protocol.format.version,url:a.protocol.url},b);return b}},gml:OpenLayers.Util.applyDefaults({boundedBy:function(a){var b=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",a,b);return b}},OpenLayers.Format.GML.v2.prototype.writers.gml),ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,sld:OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16673 feature:OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:!1,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.eTop||(this.eTop=document.createElement("div"),this.eTop.className=this.displayClass+"Top",this.div.appendChild(this.eTop),this.eTop.style.visibility=""==this.topOutUnits||""==this.topInUnits?"hidden":"visible",this.eBottom=document.createElement("div"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16674 this.eBottom.className=this.displayClass+"Bottom",this.div.appendChild(this.eBottom),this.eBottom.style.visibility=""==this.bottomOutUnits||""==this.bottomInUnits?"hidden":"visible");this.map.events.register("moveend",this,this.update);this.update();return this.div},getBarLen:function(a){var b=parseInt(Math.log(a)/Math.log(10)),b=Math.pow(10,b),a=parseInt(a/b);return(5<a?5:2<a?2:1)*b},update:function(){var a=this.map.getResolution();if(a){var b=this.map.getUnits(),c=OpenLayers.INCHES_PER_UNIT,d=this.maxWidth*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16675 a*c[b],e=1;!0===this.geodesic&&(e=(this.map.getGeodesicPixelSize().w||1.0E-6)*this.maxWidth/(d/c.km),d*=e);var f,g;1E5<d?(f=this.topOutUnits,g=this.bottomOutUnits):(f=this.topInUnits,g=this.bottomInUnits);var h=d/c[f],i=d/c[g],d=this.getBarLen(h),j=this.getBarLen(i),h=d/c[b]*c[f],i=j/c[b]*c[g],b=h/a/e,a=i/a/e;"visible"==this.eBottom.style.visibility&&(this.eBottom.style.width=Math.round(a)+"px",this.eBottom.innerHTML=j+" "+g);"visible"==this.eTop.style.visibility&&(this.eTop.style.width=Math.round(b)+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16676 "px",this.eTop.innerHTML=d+" "+f)}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,c,d){this.url=a;this.size=b||{w:20,h:20};this.offset=c||{x:-(this.size.w/2),y:-(this.size.h/2)};this.calculateOffset=d;a=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a)},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new OpenLayers.Icon(this.url,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16677 this.size,this.offset,this.calculateOffset)},setSize:function(a){null!=a&&(this.size=a);this.draw()},setUrl:function(a){null!=a&&(this.url=a);this.draw()},draw:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},erase:function(){null!=this.imageDiv&&null!=this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv)},setOpacity:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16678 null,null,null,a)},moveTo:function(a){null!=a&&(this.px=a);null!=this.imageDiv&&(null==this.px?this.display(!1):(this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x:this.px.x+this.offset.x,y:this.px.y+this.offset.y})))},display:function(a){this.imageDiv.style.display=a?"":"none"},isDrawn:function(){return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(a,b){this.lonlat=a;var c=b?b:OpenLayers.Marker.defaultIcon();null==this.icon?this.icon=c:(this.icon.url=c.url,this.icon.size=c.size,this.icon.offset=c.offset,this.icon.calculateOffset=c.calculateOffset);this.events=new OpenLayers.Events(this,this.icon.imageDiv)},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;null!=this.icon&&(this.icon.destroy(),this.icon=null)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16679 draw:function(a){return this.icon.draw(a)},erase:function(){null!=this.icon&&this.icon.erase()},moveTo:function(a){null!=a&&null!=this.icon&&this.icon.moveTo(a);this.lonlat=this.map.getLonLatFromLayerPx(a)},isDrawn:function(){return this.icon&&this.icon.isDrawn()},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsLonLat(this.lonlat));return a},inflate:function(a){this.icon&&this.icon.setSize({w:this.icon.size.w*a,h:this.icon.size.h*a})},setOpacity:function(a){this.icon.setOpacity(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16680 setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(a)},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){return new OpenLayers.Icon(OpenLayers.Util.getImageLocation("marker.png"),{w:21,h:25},{x:-10.5,y:-25})};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,format:"image/png",serverResolutions:null,initialize:function(a,b,c,d){this.layername=c;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,{},d]);this.extension=this.format.split("/")[1].toLowerCase();this.extension="jpg"==this.extension?"jpeg":this.extension},clone:function(a){null==a&&(a=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16681 [a])},getURL:function(a){function b(a,b){for(var a=""+a,c=[],d=0;d<b;++d)c.push("0");return c.join("").substring(0,b-a.length)+a}var c=this.getServerResolution(),d=this.maxExtent,e=this.tileSize,f=Math.round((a.left-d.left)/(c*e.w)),a=Math.round((a.bottom-d.bottom)/(c*e.h)),c=null!=this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,c):this.map.getZoom(),f=[this.layername,b(c,2),b(parseInt(f/1E6),3),b(parseInt(f/1E3)%1E3,3),b(parseInt(f)%1E3,3),b(parseInt(a/1E6),3),b(parseInt(a/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16682 1E3)%1E3,3),b(parseInt(a)%1E3,3)+"."+this.extension].join("/"),c=this.url;OpenLayers.Util.isArray(c)&&(c=this.selectUrl(f,c));c="/"==c.charAt(c.length-1)?c:c+"/";return c+f},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,DEFAULT_PARAMS:{i:"jpeg",map:""},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);return this.getFullRequestString({t:-Math.round(a.top/b),l:d,s:c})},calculateGridLayout:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16683 b,c){var b=c*this.tileSize.w,c=c*this.tileSize.h,d=a.left,e=Math.floor(d/b)-this.buffer,d=-(d/b-e)*this.tileSize.w,e=e*b,a=a.top,f=Math.ceil(a/c)+this.buffer;return{tilelon:b,tilelat:c,tileoffsetlon:e,tileoffsetlat:f*c,tileoffsetx:d,tileoffsety:-(f-a/c+1)*this.tileSize.h}},clone:function(a){null==a&&(a=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16684 [];return a},getTileBounds:function(a){var b=this.getResolution(),c=b*this.tileSize.w,b=b*this.tileSize.h,d=this.getLonLatFromViewPortPx(a),a=c*Math.floor(d.lon/c),d=b*Math.floor(d.lat/b);return new OpenLayers.Bounds(a,d,a+c,d+b)},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,preserveAspectRatio:!1,rotate:!0,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,irregular:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.rotationHandleSymbolizer||(this.rotationHandleSymbolizer={stroke:!1,pointRadius:10,fillOpacity:0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16685 cursor:"pointer"});this.createBox();this.createControl()},activate:function(){var a=!1;OpenLayers.Control.prototype.activate.apply(this,arguments)&&(this.dragControl.activate(),this.layer.addFeatures([this.box]),this.rotate&&this.layer.addFeatures(this.rotationHandles),this.layer.addFeatures(this.handles),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.layer.removeFeatures(this.handles),this.rotate&&this.layer.removeFeatures(this.rotationHandles),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16686 this.layer.removeFeatures([this.box]),this.dragControl.deactivate(),a=!0);return a},setMap:function(a){this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setFeature:function(a,b){var b=OpenLayers.Util.applyDefaults(b,{rotation:0,scale:1,ratio:1}),c=this.rotation,d=this.center;OpenLayers.Util.extend(this,b);if(!1!==this.events.triggerEvent("beforesetfeature",{feature:a})){this.feature=a;this.activate();this._setfeature=!0;var e=this.feature.geometry.getBounds();this.box.move(e.getCenterLonLat());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16687 this.box.geometry.rotate(-c,d);this._angle=0;this.rotation?(c=a.geometry.clone(),c.rotate(-this.rotation,this.center),c=new OpenLayers.Feature.Vector(c.getBounds().toGeometry()),c.geometry.rotate(this.rotation,this.center),this.box.geometry.rotate(this.rotation,this.center),this.box.move(c.geometry.getBounds().getCenterLonLat()),c=c.geometry.components[0].components[0].getBounds().getCenterLonLat()):c=new OpenLayers.LonLat(e.left,e.bottom);this.handles[0].move(c);delete this._setfeature;this.events.triggerEvent("setfeature",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16688 {feature:a})}},unsetFeature:function(){this.active?this.deactivate():(this.feature=null,this.rotation=0,this.ratio=this.scale=1)},createBox:function(){var a=this;this.center=new OpenLayers.Geometry.Point(0,0);this.box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16689 1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,"string"==typeof this.renderIntent?null:this.renderIntent);this.box.geometry.move=function(b,c){a._moving=!0;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);a.center.move(b,c);delete a._moving};for(var b=function(a,b){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(a,b);this._handle.geometry.move(a,b)},c=function(a,b,c){OpenLayers.Geometry.Point.prototype.resize.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16690 arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(a,b,c);this._handle.geometry.resize(a,b,c)},d=function(a,b){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(a,b);this._handle.geometry.rotate(a,b)},e=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,g=!(!a._setfeature&&a.preserveAspectRatio)&&!(f&&f.shiftKey),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16691 h=new OpenLayers.Geometry.Point(d,e),f=a.center;this.rotate(-a.rotation,f);h.rotate(-a.rotation,f);var i=this.x-f.x,j=this.y-f.y,k=i-(this.x-h.x),l=j-(this.y-h.y);a.irregular&&!a._setfeature&&(i-=(this.x-h.x)/2,j-=(this.y-h.y)/2);this.x=d;this.y=e;h=1;g?(j=1.0E-5>Math.abs(l)?1:j/l,h=(1.0E-5>Math.abs(k)?1:i/k)/j):(k=Math.sqrt(k*k+l*l),j=Math.sqrt(i*i+j*j)/k);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(j,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:j,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16692 ratio:h});a.irregular&&!a._setfeature&&(i=f.clone(),i.x+=1.0E-5>Math.abs(d-f.x)?0:this.x-d,i.y+=1.0E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:i}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,i=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(i-c,h-b);d=Math.atan2(i,h)-d;d*=180/Math.PI;a._angle=(a._angle+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16693 d)%360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),i,j,k,l="sw s se e ne n nw w".split(" "),m=0;8>m;++m)i=this.box.geometry.components[m],j=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==m%2&&(k=new OpenLayers.Feature.Vector(i.clone(),{role:l[m]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16694 null:this.rotationHandleSymbolizer),k.geometry.move=f,i._rotationHandle=k,h[m/2]=k),i.move=b,i.resize=c,i.rotate=d,j.geometry.move=e,i._handle=j,g[m]=j;this.rotationHandles=h;this.handles=g},createControl:function(){var a=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:!0,moveFeature:function(b){this.feature===a.feature&&(this.feature=a.box);OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments)},onDrag:function(b){b===a.box&&a.transformFeature({center:a.center})},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16695 onStart:function(b){var c=!a.geometryTypes||-1!==OpenLayers.Util.indexOf(a.geometryTypes,b.geometry.CLASS_NAME),d=OpenLayers.Util.indexOf(a.handles,b),d=d+OpenLayers.Util.indexOf(a.rotationHandles,b);b!==a.feature&&(b!==a.box&&-2==d&&c)&&a.setFeature(b)},onComplete:function(){a.events.triggerEvent("transformcomplete",{feature:a.feature})}})},drawHandles:function(){for(var a=this.layer,b=0;8>b;++b)this.rotate&&0===b%2&&a.drawFeature(this.rotationHandles[b/2],this.rotationHandleSymbolizer),a.drawFeature(this.handles[b],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16696 this.renderIntent)},transformFeature:function(a){if(!this._setfeature){this.scale*=a.scale||1;this.ratio*=a.ratio||1;var b=this.rotation;this.rotation=(this.rotation+(a.rotation||0))%360;if(!1!==this.events.triggerEvent("beforetransform",a)){var c=this.feature,d=c.geometry,e=this.center;d.rotate(-b,e);a.scale||a.ratio?d.resize(a.scale,e,a.ratio):a.center&&c.move(a.center.getBounds().getCenterLonLat());d.rotate(this.rotation,e);this.layer.drawFeature(c);c.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16697 a)}}this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles()},destroy:function(){for(var a,b=0;8>b;++b)a=this.box.geometry.components[b],a._handle.destroy(),a._handle=null,a._rotationHandle&&a._rotationHandle.destroy(),a._rotationHandle=null;this.rotationHandles=this.rotationHandleSymbolizer=this.handles=this.feature=this.center=null;this.box.destroy();this.layer=this.box=null;this.dragControl.destroy();this.dragControl=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16698 CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16699 null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16700 c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x),a=Math.max(c.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16701 a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16702 (this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16703 "border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b;if(this.out){b=Math.abs(a.right-a.left);var c=Math.abs(a.top-a.bottom);b=Math.min(this.map.size.h/c,this.map.size.w/b);var c=this.map.getExtent(),d=this.map.getLonLatFromPixel(a.getCenterPixel()),a=d.lon-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16704 c.getWidth()/2*b,e=d.lon+c.getWidth()/2*b,f=d.lat-c.getHeight()/2*b;b=d.lat+c.getHeight()/2*b;b=new OpenLayers.Bounds(a,f,e,b)}else b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),c=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,c.lon,c.lat);c=this.map.getZoom();this.map.zoomToExtent(b);c==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(c+(this.out?-1:1))}else this.out?this.map.setCenter(this.map.getLonLatFromPixel(a),this.map.getZoom()-1):this.map.setCenter(this.map.getLonLatFromPixel(a),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16705 this.map.getZoom()+1)},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:1,documentDrag:!1,kinetic:null,enableKinetic:!1,kineticInterval:10,draw:function(){if(this.enableKinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},{interval:this.interval,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16706 documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,f){c.map.pan(a,b,{dragging:!f,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16707 animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,touch:!1,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.touch||(this.unregisterMouseListeners(),this.touch=!0);this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16708 a.lastTouches=this.last.touches,this.handleSingle(a),this.down=null);return!0},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this})},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&(this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a))&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16709 this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16710 dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.stop(a),this.handleDouble(a)),(!this.last.touches||2!==this.last.touches.length)&&this.clearTimer()):(this.first=this.getEventInfo(a),this.queuePotentialClick(this.single?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16711 OpenLayers.Util.extend({},a):null)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length)for(var a=0,c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16712 !1;break}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,2))},passesDblclickTolerance:function(){var a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16713 null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.clientX,clientY:d.clientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,this.touch=!1,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16714 this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16715 this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16716 documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},this.mouseWheelOptions);OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16717 this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom+1)},defaultDblRightClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),this.map.zoom-1)},wheelChange:function(a,b){var c=this.map.getZoom(),d=this.map.getZoom()+Math.round(b),d=Math.max(d,0),d=Math.min(d,this.map.getNumZoomLevels());if(d!==c){var e=this.map.getSize(),c=e.w/2-a.xy.x,e=a.xy.y-e.h/2,f=this.map.baseLayer.getResolutionForZoom(d),g=this.map.getLonLatFromPixel(a.xy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16718 this.map.setCenter(new OpenLayers.LonLat(g.lon+c*f,g.lat+e*f),d)}},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16719 CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,multi:!1,featureAdded:function(){},handlerOptions:null,initialize:function(a,b,c){OpenLayers.Control.prototype.initialize.apply(this,[c]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(a,b){this.layer.events.triggerEvent("sketchmodified",{vertex:a,feature:b})},create:function(a,b){this.layer.events.triggerEvent("sketchstarted",{vertex:a,feature:b})}},this.callbacks);this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16720 a;this.handlerOptions=this.handlerOptions||{};this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{renderers:a.renderers,rendererOptions:a.rendererOptions});"multi"in this.handlerOptions||(this.handlerOptions.multi=this.multi);if(a=this.layer.styleMap&&this.layer.styleMap.styles.temporary)this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":a})});this.handler=new b(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16721 this.callbacks,this.handlerOptions)},drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:a})&&(a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},insertXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertXY(a,b)},insertDeltaXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeltaXY(a,b)},insertDirectionLength:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16722 b){this.handler&&this.handler.line&&this.handler.insertDirectionLength(a,b)},insertDeflectionLength:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeflectionLength(a,b)},undo:function(){return this.handler.undo&&this.handler.undo()},redo:function(){return this.handler.redo&&this.handler.redo()},finishSketch:function(){this.handler.finishGeometry()},cancel:function(){this.handler.cancel()},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:!1,polygon:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16723 this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:!0})},addPoint:function(a){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier])for(var b=this.point.geometry,c=this.control.layer.features,d,e=c.length-1;0<=e;--e)if(d=c[e].geometry,(d instanceof OpenLayers.Geometry.Polygon||d instanceof OpenLayers.Geometry.MultiPolygon)&&d.intersects(b)){b=c[e];this.control.layer.removeFeatures([b],{silent:!0});this.control.layer.events.registerPriority("sketchcomplete",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16724 this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);b.geometry.addComponent(this.line.geometry);this.polygon=b;this.drawingHole=!0;break}OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments)},getCurrentPointIndex:function(){return this.line.geometry.components.length-2},enforceTopology:function(a){var a=a.vertex,b=this.line.geometry.components;this.polygon.geometry.intersects(a)||(b=b[b.length-3],a.x=b.x,a.y=b.y)},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16725 2]);this.removePoint();this.finalize()},finalizeInteriorRing:function(){var a=this.line.geometry,b=0!==a.getArea();if(b){for(var c=this.polygon.geometry.components,d=c.length-2;0<=d;--d)if(a.intersects(c[d])){b=!1;break}if(b){d=c.length-2;a:for(;0<d;--d)for(var e=c[d].components,f=0,g=e.length;f<g;++f)if(a.containsPoint(e[f])){b=!1;break a}}}b?this.polygon.state!==OpenLayers.State.INSERT&&(this.polygon.state=OpenLayers.State.UPDATE):this.polygon.geometry.removeComponent(a);this.restoreFeature();return!1},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16726 cancel:function(){this.drawingHole&&(this.polygon.geometry.removeComponent(this.line.geometry),this.restoreFeature(!0));return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments)},restoreFeature:function(a){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:!0});this.control.layer.addFeatures([this.polygon],{silent:!0});this.drawingHole=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16727 !1;a||this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon})},destroyFeature:function(a){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,a);this.polygon=null},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var a=this.polygon&&this.polygon.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPolygon([a]));return a},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{citeCompliant:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b]);this.addControls([new OpenLayers.Control.Navigation]);this.addControls([new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Point,{displayClass:"olControlDrawFeaturePoint",handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Path,{displayClass:"olControlDrawFeaturePath",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16728 handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Polygon,{displayClass:"olControlDrawFeaturePolygon",handlerOptions:{citeCompliant:this.citeCompliant}})])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16729 scope:this});return a},update:function(a){var b=this.getMapBounds();if(null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b)))this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a)},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16730 return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio,a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){this.response&&!(a&&!0===a.noAbort)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16731 (this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16732 filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if((a=a.features)&&0<a.length){var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b))for(var d,e=0,f=a.length;e<f;++e)(d=a[e].geometry)&&d.transform(b,c);this.layer.addFeatures(a)}this.response=null;this.layer.events.triggerEvent("loadend")},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:!0,lzd:null,zoomLevels:null,initialize:function(a,b,c,d,e,f){this.lzd=c;this.zoomLevels=d;c=[];c.push(a,b,e,f);OpenLayers.Layer.Grid.prototype.initialize.apply(this,c);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getZoom:function(){var a=this.map.getZoom();this.map.getMaxExtent();return a-=Math.log(this.maxResolution/(this.lzd/512))/Math.log(2)},getURL:function(a){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16733 this.adjustBounds(a),b=this.getZoom(),c=this.map.getMaxExtent(),d=this.lzd/Math.pow(2,this.getZoom()),e=Math.floor((a.left-c.left)/d),a=Math.floor((a.bottom-c.bottom)/d);return this.map.getResolution()<=this.lzd/512&&this.getZoom()<=this.zoomLevels?this.getFullRequestString({L:b,X:e,Y:a}):OpenLayers.Util.getImageLocation("blank.gif")},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Protocol.CSW=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.CSW.DEFAULTS),b=OpenLayers.Protocol.CSW["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSW version: "+a.version;return new b(a)};OpenLayers.Protocol.CSW.DEFAULTS={version:"2.0.2"};OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){var c,d={layer:!0,matrixSet:!0},e;for(e in d)if(!(e in b))throw Error("Missing property '"+e+"' in layer configuration.");d=a.contents;e=d.tileMatrixSets[b.matrixSet];for(var f,g=0,h=d.layers.length;g<h;++g)if(d.layers[g].identifier===b.layer){f=d.layers[g];break}if(f&&e){for(var i,g=0,h=f.styles.length;g<h&&!(i=f.styles[g],i.isDefault);++g);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16734 c=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(b,{url:"REST"===b.requestEncoding&&f.resourceUrl?f.resourceUrl.tile.template:a.operationsMetadata.GetTile.dcp.http.get[0].url,name:f.title,style:i.identifier,matrixIds:e.matrixIds,tileFullExtent:e.bounds}))}return c},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(b=this.map.viewPortDiv,a=document.createElement("div"),a.id=this.map.id+"_GMapContainer",a.style.position="absolute",a.style.width="100%",a.style.height="100%",b.appendChild(a),b=this.map.getCenter(),a=new google.maps.Map(a,{center:b?new google.maps.LatLng(b.lat,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16735 b.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b={mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b,this.repositionListener=google.maps.event.addListenerOnce(a,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this)));this.mapObject=a;this.setGMapVisibility(this.visibility)},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16736 "resize");var a=this.mapObject.getDiv().firstChild;if(!a||3>a.childNodes.length)return this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250),!1;for(var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map.viewPortDiv,d=a.children.length-1;0<=d;--d){if(1000001==a.children[d].style.zIndex){var e=a.children[d];c.appendChild(e);e.style.zIndex="1100";e.style.bottom="";e.className="olLayerGoogleCopyright olLayerGoogleV3";e.style.display="";b.termsOfUse=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16737 e}1E6==a.children[d].style.zIndex&&(e=a.children[d],c.appendChild(e),e.style.zIndex="1100",e.style.bottom="",e.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint",e.style.display="",b.poweredBy=e);10000002==a.children[d].style.zIndex&&c.appendChild(a.children[d])}this.setGMapVisibility(this.visibility)},onMapResize:function(){if(this.visibility)google.maps.event.trigger(this.mapObject,"resize");else{var a=OpenLayers.Layer.Google.cache[this.map.id];if(!a.resized){var b=this;google.maps.event.addListenerOnce(this.mapObject,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16738 "tilesloaded",function(){google.maps.event.trigger(b.mapObject,"resize");b.moveTo(b.map.getCenter(),b.map.getZoom());delete a.resized})}a.resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];if(b){for(var c=this.type,d=this.map.layers,e,f=d.length-1;0<=f;--f)if(e=d[f],e instanceof OpenLayers.Layer.Google&&!0===e.visibility&&!0===e.inRange){c=e.type;a=!0;break}d=this.mapObject.getDiv();!0===a?(this.mapObject.setMapTypeId(c),d.style.left="",b.termsOfUse&&b.termsOfUse.style&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16739 (b.termsOfUse.style.left="",b.termsOfUse.style.display="",b.poweredBy.style.display=""),b.displayed=this.id):(delete b.displayed,d.style.left="-9999px",b.termsOfUse&&b.termsOfUse.style&&(b.termsOfUse.style.display="none",b.termsOfUse.style.left="-9999px",b.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16740 a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution(),a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16741 this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16742 "idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)},destroy:function(){this.repositionListener&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16743 google.maps.event.removeListener(this.repositionListener);this.repositionTimer&&window.clearTimeout(this.repositionTimer);OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments)}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16744 [a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wps:{ProcessDescriptions:function(a,b){b.processDescriptions={};this.readChildNodes(a,b.processDescriptions)},ProcessDescription:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion"),statusSupported:"true"===a.getAttribute("statusSupported"),storeSupported:"true"===a.getAttribute("storeSupported")};this.readChildNodes(a,c);b[c.identifier]=c},DataInputs:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16745 b){b.dataInputs=[];this.readChildNodes(a,b.dataInputs)},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},ComplexOutput:function(a,b){b.complexOutput={};this.readChildNodes(a,b.complexOutput)},Input:function(a,b){var c={maxOccurs:parseInt(a.getAttribute("maxOccurs")),minOccurs:parseInt(a.getAttribute("minOccurs"))};this.readChildNodes(a,c);b.push(c)},BoundingBoxData:function(a,b){b.boundingBoxData=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16746 {};this.readChildNodes(a,b.boundingBoxData)},CRS:function(a,b){b.CRSs||(b.CRSs={});b.CRSs[this.getChildValue(a)]=!0},LiteralData:function(a,b){b.literalData={};this.readChildNodes(a,b.literalData)},ComplexData:function(a,b){b.complexData={};this.readChildNodes(a,b.complexData)},Default:function(a,b){b["default"]={};this.readChildNodes(a,b["default"])},Supported:function(a,b){b.supported={};this.readChildNodes(a,b.supported)},Format:function(a,b){var c={};this.readChildNodes(a,c);b.formats||(b.formats=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16747 {});b.formats[c.mimeType]=!0},MimeType:function(a,b){b.mimeType=this.getChildValue(a)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",gmd:"http://www.isotc211.org/2005/gmd",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16748 requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16749 readers:{csw:{GetRecordsResponse:function(a,b){b.records=[];this.readChildNodes(a,b);var c=this.getAttributeNS(a,"","version");""!=c&&(b.version=c)},RequestId:function(a,b){b.RequestId=this.getChildValue(a)},SearchStatus:function(a,b){b.SearchStatus={};var c=this.getAttributeNS(a,"","timestamp");""!=c&&(b.SearchStatus.timestamp=c)},SearchResults:function(a,b){this.readChildNodes(a,b);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]="numberOfRecordsMatched"==c[e].name||"numberOfRecordsReturned"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16750 c[e].name||"nextRecord"==c[e].name?parseInt(c[e].nodeValue):c[e].nodeValue;b.SearchResults=d},SummaryRecord:function(a,b){var c={type:"SummaryRecord"};this.readChildNodes(a,c);b.records.push(c)},BriefRecord:function(a,b){var c={type:"BriefRecord"};this.readChildNodes(a,c);b.records.push(c)},DCMIRecord:function(a,b){var c={type:"DCMIRecord"};this.readChildNodes(a,c);b.records.push(c)},Record:function(a,b){var c={type:"Record"};this.readChildNodes(a,c);b.records.push(c)},"*":function(a,b){var c=a.localName||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16751 a.nodeName.split(":").pop();b[c]=this.getChildValue(a)}},geonet:{info:function(a,b){var c={};this.readChildNodes(a,c);b.gninfo=c}},dc:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);for(var d={},e=a.attributes,f=0,g=e.length;f<g;++f)d[e[f].name]=e[f].nodeValue;d.value=this.getChildValue(a);""!=d.value&&b[c].push(d)}},dct:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);b[c].push(this.getChildValue(a))}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16752 ows:OpenLayers.Util.applyDefaults({BoundingBox:function(a,b){b.bounds&&(b.BoundingBox=[{crs:b.projection,value:[b.bounds.left,b.bounds.bottom,b.bounds.right,b.bounds.top]}],delete b.projection,delete b.bounds);OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(this,arguments)}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows)},write:function(a){a=this.writeNode("csw:GetRecords",a);a.setAttribute("xmlns:gmd",this.namespaces.gmd);return OpenLayers.Format.XML.prototype.write.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16753 [a])},writers:{csw:{GetRecords:function(a){a||(a={});var b=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:a.requestId||this.requestId,resultType:a.resultType||this.resultType,outputFormat:a.outputFormat||this.outputFormat,outputSchema:a.outputSchema||this.outputSchema,startPosition:a.startPosition||this.startPosition,maxRecords:a.maxRecords||this.maxRecords}});if(a.DistributedSearch||this.DistributedSearch)this.writeNode("csw:DistributedSearch",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16754 a.DistributedSearch||this.DistributedSearch,b);var c=a.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ResponseHandler",c[d],b);this.writeNode("Query",a.Query||this.Query,b);return b},DistributedSearch:function(a){return this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:a.hopCount}})},ResponseHandler:function(a){return this.createElementNSPlus("csw:ResponseHandler",{value:a.value})},Query:function(a){a||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16755 (a={});var b=this.createElementNSPlus("csw:Query",{attributes:{typeNames:a.typeNames||"csw:Record"}}),c=a.ElementName;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ElementName",c[d],b);else this.writeNode("csw:ElementSetName",a.ElementSetName||{value:"summary"},b);a.Constraint&&this.writeNode("csw:Constraint",a.Constraint,b);a.SortBy&&this.writeNode("ogc:SortBy",a.SortBy,b);return b},ElementName:function(a){return this.createElementNSPlus("csw:ElementName",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16756 {value:a.value})},ElementSetName:function(a){return this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:a.typeNames},value:a.value})},Constraint:function(a){var b=this.createElementNSPlus("csw:Constraint",{attributes:{version:a.version}});if(a.Filter){var c=new OpenLayers.Format.Filter({version:a.version});b.appendChild(c.write(a.Filter))}else a.CqlText&&(a=this.createElementNSPlus("CqlText",{value:a.CqlText.value}),b.appendChild(a));return b}},ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16757 CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(a,b,c){this.bounds=a;this.div=OpenLayers.Util.createDiv();this.div.style.overflow="hidden";this.events=new OpenLayers.Events(this,this.div);this.setBorder(b,c)},destroy:function(){this.div=this.bounds=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments)},setBorder:function(a,b){a||(a="red");b||(b=2);this.div.style.border=b+"px solid "+a},draw:function(a,b){OpenLayers.Util.modifyDOMElement(this.div,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16758 null,a,b);return this.div},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsBounds(this.bounds,!0,!0));return a},display:function(a){this.div.style.display=a?"":"none"},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:!0,initialize:function(a){a=a||{};!1!==a.extractStyles&&(a.defaultStyle={externalGraphic:OpenLayers.Util.getImageLocation("marker.png"),graphicWidth:21,graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-12.5});OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){for(var a=a.split("\n"),b,c=[],d=0;d<a.length-1;d++){var e=a[d].replace(/^\s*/,"").replace(/\s*$/,"");if("#"!=e.charAt(0))if(b){for(var e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16759 e.split("\t"),f=new OpenLayers.Geometry.Point(0,0),g={},h=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null,i=!1,j=0;j<e.length;j++)if(e[j])if("point"==b[j])i=e[j].split(","),f.y=parseFloat(i[0]),f.x=parseFloat(i[1]),i=!0;else if("lat"==b[j])f.y=parseFloat(e[j]),i=!0;else if("lon"==b[j])f.x=parseFloat(e[j]),i=!0;else if("title"==b[j])g.title=e[j];else if("image"==b[j]||"icon"==b[j]&&h)h.externalGraphic=e[j];else if("iconSize"==b[j]&&h){var k=e[j].split(",");h.graphicWidth=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16760 parseFloat(k[0]);h.graphicHeight=parseFloat(k[1])}else"iconOffset"==b[j]&&h?(k=e[j].split(","),h.graphicXOffset=parseFloat(k[0]),h.graphicYOffset=parseFloat(k[1])):"description"==b[j]?g.description=e[j]:"overflow"==b[j]?g.overflow=e[j]:g[b[j]]=e[j];i&&(this.internalProjection&&this.externalProjection&&f.transform(this.externalProjection,this.internalProjection),e=new OpenLayers.Feature.Vector(f,g,h),c.push(e))}else b=e.split("\t")}return c},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(a,b){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadText:function(){!this.loaded&&null!=this.location&&(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16761 success:this.parseData,failure:function(){this.events.triggerEvent("loadend")},scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadText()},parseData:function(a){var a=a.responseText,b={};OpenLayers.Util.extend(b,this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(b.externalProjection=this.projection,b.internalProjection=this.map.getProjectionObject());for(var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16762 (new OpenLayers.Format.Text(b)).read(a),b=0,c=a.length;b<c;b++){var d={},e=a[b],f,g,h;f=new OpenLayers.LonLat(e.geometry.x,e.geometry.y);e.style.graphicWidth&&e.style.graphicHeight&&(g=new OpenLayers.Size(e.style.graphicWidth,e.style.graphicHeight));void 0!==e.style.graphicXOffset&&void 0!==e.style.graphicYOffset&&(h=new OpenLayers.Pixel(e.style.graphicXOffset,e.style.graphicYOffset));null!=e.style.externalGraphic?d.icon=new OpenLayers.Icon(e.style.externalGraphic,g,h):(d.icon=OpenLayers.Marker.defaultIcon(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16763 null!=g&&d.icon.setSize(g));null!=e.attributes.title&&null!=e.attributes.description&&(d.popupContentHTML="<h2>"+e.attributes.title+"</h2><p>"+e.attributes.description+"</p>");d.overflow=e.attributes.overflow||"auto";d=new OpenLayers.Feature(this,f,d);this.features.push(d);f=d.createMarker();null!=e.attributes.title&&null!=e.attributes.description&&f.events.register("click",d,this.markerClick);this.addMarker(f)}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16764 this.layer.selectedFeature=!b?this:null;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||this.layer.map.addPopup(this.createPopup());OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:"shiftKey",layerOptions:null,persist:!1,irregular:!1,citeCompliant:!1,angle:null,fixedRadius:!1,feature:null,layer:null,origin:null,initialize:function(a,b,c){if(!c||!c.layerOptions||!c.layerOptions.styleMap)this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{});OpenLayers.Handler.Drag.prototype.initialize.apply(this,[a,b,c]);this.options=c?c:{}},setOptions:function(a){OpenLayers.Util.extend(this.options,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16765 a);OpenLayers.Util.extend(this,a)},activate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)&&(a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions),this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a),this.map.addLayer(this.layer),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)&&(this.dragging&&this.cancel(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16766 null!=this.layer.map&&(this.layer.destroy(!1),this.feature&&this.feature.destroy()),this.feature=this.layer=null,a=!0);return a},down:function(a){this.fixedRadius=!!this.radius;a=this.layer.getLonLatFromViewPortPx(a.xy);this.origin=new OpenLayers.Geometry.Point(a.lon,a.lat);if(!this.fixedRadius||this.irregular)this.radius=this.map.getResolution();this.persist&&this.clear();this.feature=new OpenLayers.Feature.Vector;this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16767 {silent:!0});this.layer.drawFeature(this.feature,this.style)},move:function(a){var b=this.layer.getLonLatFromViewPortPx(a.xy),b=new OpenLayers.Geometry.Point(b.lon,b.lat);this.irregular?(a=Math.sqrt(2)*Math.abs(b.y-this.origin.y)/2,this.radius=Math.max(this.map.getResolution()/2,a)):this.fixedRadius?this.origin=b:(this.calculateAngle(b,a),this.radius=Math.max(this.map.getResolution()/2,b.distanceTo(this.origin)));this.modifyGeometry();this.irregular&&(a=b.x-this.origin.x,b=b.y-this.origin.y,this.feature.geometry.resize(1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16768 this.origin,0==b?a/(this.radius*Math.sqrt(2)):a/b),this.feature.geometry.move(a/2,b/2));this.layer.drawFeature(this.feature,this.style)},up:function(a){this.finalize();this.start==this.last&&this.callback("done",[a.xy])},out:function(){this.finalize()},createGeometry:function(){this.angle=Math.PI*(1/this.sides-0.5);this.snapAngle&&(this.angle+=this.snapAngle*(Math.PI/180));this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle)},modifyGeometry:function(){var a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16769 b,c=this.feature.geometry.components[0];c.components.length!=this.sides+1&&(this.createGeometry(),c=this.feature.geometry.components[0]);for(var d=0;d<this.sides;++d)b=c.components[d],a=this.angle+2*d*Math.PI/this.sides,b.x=this.origin.x+this.radius*Math.cos(a),b.y=this.origin.y+this.radius*Math.sin(a),b.clearBounds()},calculateAngle:function(a,b){var c=Math.atan2(a.y-this.origin.y,a.x-this.origin.x);if(this.snapAngle&&this.snapToggle&&!b[this.snapToggle]){var d=Math.PI/180*this.snapAngle;this.angle=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16770 Math.round(c/d)*d}else this.angle=c},cancel:function(){this.callback("cancel",null);this.finalize()},finalize:function(){this.origin=null;this.radius=this.options.radius},clear:function(){this.layer&&(this.layer.renderer.clear(),this.layer.destroyFeatures())},callback:function(a){this.callbacks[a]&&this.callbacks[a].apply(this.control,[this.feature.geometry.clone()]);!this.persist&&("done"==a||"cancel"==a)&&this.clear()},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{clearOnDeactivate:!1,layers:null,callbacks:null,selectionSymbolizer:{Polygon:{fillColor:"#FF0000",stroke:!1},Line:{strokeColor:"#FF0000",strokeWidth:2},Point:{graphicName:"square",fillColor:"#FF0000",pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16771 this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:!1,tileOptions:{maxGetUrlLength:2048}});this.sketchStyle&&(this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})}));this.handler=new a(this,this.callbacks,this.handlerOptions)},destroy:function(){for(var a in this.layerCache)delete this.layerCache[a];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16772 for(a in this.wfsCache)delete this.wfsCache[a];OpenLayers.Control.prototype.destroy.apply(this,arguments)},coupleLayerVisiblity:function(a){this.setVisibility(a.object.getVisibility())},createSelectionLayer:function(a){var b;if(this.layerCache[a.id])b=this.layerCache[a.id];else{b=new OpenLayers.Layer.WMS(a.name,a.url,a.params,OpenLayers.Util.applyDefaults(this.layerOptions,a.getOptions()));this.layerCache[a.id]=b;if(!1===this.layerOptions.displayInLayerSwitcher)a.events.on({visibilitychanged:this.coupleLayerVisiblity,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16773 scope:b});this.map.addLayer(b)}return b},createSLD:function(a,b,c){for(var d={version:"1.0.0",namedLayers:{}},e=(""+a.params.LAYERS).split(","),f=0,g=e.length;f<g;f++){var h=e[f];d.namedLayers[h]={name:h,userStyles:[]};var i=this.selectionSymbolizer,j=c[f];0<=j.type.indexOf("Polygon")?i={Polygon:this.selectionSymbolizer.Polygon}:0<=j.type.indexOf("LineString")?i={Line:this.selectionSymbolizer.Line}:0<=j.type.indexOf("Point")&&(i={Point:this.selectionSymbolizer.Point});d.namedLayers[h].userStyles.push({name:"default",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16774 rules:[new OpenLayers.Rule({symbolizer:i,filter:b[f],maxScaleDenominator:a.options.minScale})]})}return(new OpenLayers.Format.SLD({srsName:this.map.getProjection()})).write(d)},parseDescribeLayer:function(a){var b=new OpenLayers.Format.WMSDescribeLayer,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;for(var a=b.read(c),b=[],c=null,d=0,e=a.length;d<e;d++)"WFS"==a[d].owsType&&(b.push(a[d].typeName),c=a[d].owsURL);OpenLayers.Request.GET({url:c,params:{SERVICE:"WFS",TYPENAME:b.toString(),REQUEST:"DescribeFeatureType",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16775 VERSION:"1.0.0"},callback:function(a){var b=new OpenLayers.Format.WFSDescribeFeatureType,c=a.responseXML;if(!c||!c.documentElement)c=a.responseText;this.control.wfsCache[this.layer.id]=b.read(c);this.control._queue&&this.control.applySelection()},scope:this})},getGeometryAttributes:function(a){for(var b=[],a=this.wfsCache[a.id],c=0,d=a.featureTypes.length;c<d;c++)for(var e=a.featureTypes[c].properties,f=0,g=e.length;f<g;f++){var h=e[f],i=h.type;(0<=i.indexOf("LineString")||0<=i.indexOf("GeometryAssociationType")||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16776 0<=i.indexOf("GeometryPropertyType")||0<=i.indexOf("Point")||0<=i.indexOf("Polygon"))&&b.push(h)}return b},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];d&&!this.wfsCache[d.id]&&OpenLayers.Request.GET({url:d.url,params:{SERVICE:"WMS",VERSION:d.params.VERSION,LAYERS:d.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:d,control:this}})}return a},deactivate:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16777 OpenLayers.Control.prototype.deactivate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];if(d&&!0===this.clearOnDeactivate){var e=this.layerCache,f=e[d.id];f&&(d.events.un({visibilitychanged:this.coupleLayerVisiblity,scope:f}),f.destroy(),delete e[d.id])}}return a},setLayers:function(a){this.active?(this.deactivate(),this.layers=a,this.activate()):this.layers=a},createFilter:function(a,b){var c=null;this.handler instanceof OpenLayers.Handler.RegularPolygon?c=!0===this.handler.irregular?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16778 new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:a.name,value:b.getBounds()}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Polygon?c=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Path?c=0<=a.type.indexOf("Point")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16779 property:a.name,distance:0.01*this.map.getExtent().getWidth(),distanceUnits:this.map.getUnits(),value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Click&&(c=0<=a.type.indexOf("Polygon")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:a.name,distance:0.01*this.map.getExtent().getWidth(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16780 distanceUnits:this.map.getUnits(),value:b}));return c},select:function(a){this._queue=function(){for(var b=0,c=this.layers.length;b<c;b++){for(var d=this.layers[b],e=this.getGeometryAttributes(d),f=[],g=0,h=e.length;g<h;g++){var i=e[g];if(null!==i){if(!(a instanceof OpenLayers.Geometry)){var j=this.map.getLonLatFromPixel(a.xy);a=new OpenLayers.Geometry.Point(j.lon,j.lat)}i=this.createFilter(i,a);null!==i&&f.push(i)}}g=this.createSelectionLayer(d);e=this.createSLD(d,f,e);this.events.triggerEvent("selected",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16781 {layer:d,filters:f});g.mergeNewParams({SLD_BODY:e});delete this._queue}};this.applySelection()},applySelection:function(){for(var a=!0,b=0,c=this.layers.length;b<c;b++)if(!this.wfsCache[this.layers[b].id]){a=!1;break}a&&this._queue.call(this)},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.element=OpenLayers.Util.getElement(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.element=document.createElement("div"),this.div.appendChild(this.element));this.map.events.register("moveend",this,this.updateScale);this.updateScale();return this.div},updateScale:function(){var a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16782 if(!0===this.geodesic){if(!this.map.getUnits())return;a=OpenLayers.INCHES_PER_UNIT;a=(this.map.getGeodesicPixelSize().w||1.0E-6)*a.km*OpenLayers.DOTS_PER_INCH}else a=this.map.getScale();a&&(a=9500<=a&&95E4>=a?Math.round(a/1E3)+"K":95E4<=a?Math.round(a/1E6)+"M":Math.round(a),this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{scaleDenom:a}))},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,useHttpTile:!1,singleTile:!1,useOverlay:!1,useAsyncOverlay:!0,TILE_PARAMS:{operation:"GETTILEIMAGE",version:"1.2.0"},SINGLE_TILE_PARAMS:{operation:"GETMAPIMAGE",format:"PNG",locale:"en",clip:"1",version:"1.0.0"},OVERLAY_PARAMS:{operation:"GETDYNAMICMAPOVERLAYIMAGE",format:"PNG",locale:"en",clip:"1",version:"2.0.0"},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:"png",querystring:null},defaultSize:new OpenLayers.Size(300,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16783 300),tileOriginCorner:"tl",initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.transparent&&!0!=this.transparent;d&&null!=d.useOverlay&&(this.useOverlay=d.useOverlay);this.singleTile?this.useOverlay?(OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS),this.useAsyncOverlay||(this.params.version="1.0.0")):OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS):(this.useHttpTile?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16784 OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS):OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS),this.setTileSize(this.defaultSize))},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var b;b=a.getCenterLonLat();var c=this.map.getSize();this.singleTile?(a={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:c.h*this.ratio,setdisplaywidth:c.w*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16785 this.ratio,setviewcenterx:b.lon,setviewcentery:b.lat,setviewscale:this.map.getScale()},this.useOverlay&&!this.useAsyncOverlay&&(b={},b=OpenLayers.Util.extend(b,a),b.operation="GETVISIBLEMAPEXTENT",b.version="1.0.0",b.session=this.params.session,b.mapName=this.params.mapName,b.format="text/xml",b=this.getFullRequestString(b),OpenLayers.Request.GET({url:b,async:!1})),b=this.getFullRequestString(a)):(c=this.map.getResolution(),b=Math.floor((a.left-this.maxExtent.left)/c),b=Math.round(b/this.tileSize.w),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16786 a=Math.floor((this.maxExtent.top-a.top)/c),a=Math.round(a/this.tileSize.h),b=this.useHttpTile?this.getImageFilePath({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}):this.getFullRequestString({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}));return b},getFullRequestString:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d=c,e=OpenLayers.Util.extend({},this.params),e=OpenLayers.Util.extend(e,a),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16787 f=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),g;for(g in e)g.toUpperCase()in f&&delete e[g];e=OpenLayers.Util.getParameterString(e);e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},getImageFilePath:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d="",e="";0>a.tilerow&&(d="-");d=0==a.tilerow?d+"0":d+Math.floor(Math.abs(a.tilerow/this.params.tileRowsPerFolder))*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16788 this.params.tileRowsPerFolder;0>a.tilecol&&(e="-");e=0==a.tilecol?e+"0":e+Math.floor(Math.abs(a.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;d="/S"+Math.floor(a.scaleindex)+"/"+this.params.basemaplayergroupname+"/R"+d+"/C"+e+"/"+a.tilerow%this.params.tileRowsPerFolder+"_"+a.tilecol%this.params.tileColumnsPerFolder+"."+this.params.format;this.params.querystring&&(d+="?"+this.params.querystring);return c+d},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w,c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16789 c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{handlerOptions:null,callbacks:null,displaySystem:"metric",geodesic:!1,displaySystemUnits:{geographic:["dd"],english:["mi","ft","in"],metric:["km","m"]},partialDelay:300,delayedTrigger:null,persist:!1,immediate:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);var c={done:this.measureComplete,point:this.measurePartial};this.immediate&&(c.modify=this.measureImmediate);this.callbacks=OpenLayers.Util.extend(c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16790 this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new a(this,this.callbacks,this.handlerOptions)},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},cancel:function(){this.cancelDelay();this.handler.cancel()},setImmediate:function(a){(this.immediate=a)?this.callbacks.modify=this.measureImmediate:delete this.callbacks.modify},updateHandler:function(a,b){var c=this.active;c&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16791 this.deactivate();this.handler=new a(this,this.callbacks,b);c&&this.activate()},measureComplete:function(a){this.cancelDelay();this.measure(a,"measure")},measurePartial:function(a,b){this.cancelDelay();b=b.clone();this.handler.freehandMode(this.handler.evt)?this.measure(b,"measurepartial"):this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(b,"measurepartial")},this),this.partialDelay)},measureImmediate:function(a,b,c){c&&!this.handler.freehandMode(this.handler.evt)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16792 (this.cancelDelay(),this.measure(b.geometry,"measurepartial"))},cancelDelay:function(){null!==this.delayedTrigger&&(window.clearTimeout(this.delayedTrigger),this.delayedTrigger=null)},measure:function(a,b){var c,d;-1<a.CLASS_NAME.indexOf("LineString")?(c=this.getBestLength(a),d=1):(c=this.getBestArea(a),d=2);this.events.triggerEvent(b,{measure:c[0],units:c[1],order:d,geometry:a})},getBestArea:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getArea(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16793 c),1<d);++e);return[d,c]},getArea:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicArea(this.map.getProjectionObject()),d="m"):(c=a.getArea(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=Math.pow(OpenLayers.INCHES_PER_UNIT[d]/e,2));return c},getBestLength:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getLength(a,c),1<d);++e);return[d,c]},getLength:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicLength(this.map.getProjectionObject()),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16794 d="m"):(c=a.getLength(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=OpenLayers.INCHES_PER_UNIT[d]/e);return c},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_wmc_SRS:function(a,b){var c=this.getChildValue(b);"object"!=typeof a.projections&&(a.projections={});for(var c=c.split(/ +/),d=0,e=c.length;d<e;d++)a.projections[c[d]]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16795 [a]);if(a.srs){var c=[],d;for(d in a.srs)c.push(d);b.appendChild(this.createElementDefaultNS("SRS",c.join(" ")))}b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a))},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16796 1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16797 arguments)},setBackgroundColor:function(){},setBorder:function(){},setOpacity:function(){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16798 OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16799 "_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,i=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,j=isNaN(c.size.h)?this.size.h-(f+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16800 h):c.size.h;d.div.style.width=(0>i?0:i)+"px";d.div.style.height=(0>j?0:j)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16801 50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16802 "auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16803 0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16804 21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16805 0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16806 OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,draw:function(){if(OpenLayers.Tile.Image.prototype.shouldDraw.call(this)){var a=this.layer.getURL(this.bounds),b=this.useIFrame;this.useIFrame=null!==this.maxGetUrlLength&&!this.layer.async&&a.length>this.maxGetUrlLength;a=b&&!this.useIFrame;b=!b&&this.useIFrame;if(a||b)this.imgDiv&&this.imgDiv.parentNode===this.frame&&this.frame.removeChild(this.imgDiv),this.imgDiv=null,a?(this.blankImageUrl=this._blankImageUrl,this.frame.removeChild(this.frame.firstChild)):
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16807 (this._blankImageUrl=this.blankImageUrl,this.blankImageUrl="about:blank")}return OpenLayers.Tile.Image.prototype.draw.apply(this,arguments)},getImage:function(){if(!0===this.useIFrame){if(!this.frame.childNodes.length){var a=document.createElement("div"),b=a.style;b.position="absolute";b.width="100%";b.height="100%";b.zIndex=1;b.backgroundImage="url("+this._blankImageUrl+")";this.frame.appendChild(a)}a=this.id+"_iFrame";9>parseFloat(navigator.appVersion.split("MSIE")[1])?(b=document.createElement('<iframe name="'+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16808 a+'">'),b.style.backgroundColor="#FFFFFF",b.style.filter="chroma(color=#FFFFFF)"):(b=document.createElement("iframe"),b.style.backgroundColor="transparent",b.name=a);b.scrolling="no";b.marginWidth="0px";b.marginHeight="0px";b.frameBorder="0";b.style.position="absolute";b.style.width="100%";b.style.height="100%";1>this.layer.opacity&&OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,this.layer.opacity);this.frame.appendChild(b);return this.imgDiv=b}return OpenLayers.Tile.Image.prototype.getImage.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16809 arguments)},createRequestForm:function(){var a=document.createElement("form");a.method="POST";var b=this.layer.params._OLSALT,b=(b?b+"_":"")+this.bounds.toBBOX();a.action=OpenLayers.Util.urlAppend(this.layer.url,b);a.target=this.id+"_iFrame";this.layer.getImageSize();var b=OpenLayers.Util.getParameters(this.url),c,d;for(d in b)c=document.createElement("input"),c.type="hidden",c.name=d,c.value=b[d],a.appendChild(c);return a},setImgSrc:function(a){if(!0===this.useIFrame)if(a){var b=this.createRequestForm();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16810 this.frame.appendChild(b);b.submit();this.frame.removeChild(b)}else this.imgDiv.parentNode===this.frame&&(this.frame.removeChild(this.imgDiv),this.imgDiv=null);else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this,arguments)},onImageLoad:function(){OpenLayers.Tile.Image.prototype.onImageLoad.apply(this,arguments);!0===this.useIFrame&&(this.imgDiv.style.opacity=1,this.frame.style.opacity=this.layer.opacity)},createBackBuffer:function(){var a;!1===this.useIFrame&&(a=OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16811 return a}};OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16812 [a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{gml:OpenLayers.Util.applyDefaults({name:function(a,b){b.name=this.getChildValue(a)},TimePeriod:function(a,b){b.timePeriod={};this.readChildNodes(a,b.timePeriod)},beginPosition:function(a,b){b.beginPosition=this.getChildValue(a)},endPosition:function(a,b){b.endPosition=this.getChildValue(a)}},OpenLayers.Format.GML.v3.prototype.readers.gml),sos:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16813 b){b.contents={};this.readChildNodes(a,b.contents)},ObservationOfferingList:function(a,b){b.offeringList={};this.readChildNodes(a,b.offeringList)},ObservationOffering:function(a,b){var c=this.getAttributeNS(a,this.namespaces.gml,"id");b[c]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(a,b[c])},time:function(a,b){b.time={};this.readChildNodes(a,b.time)},procedure:function(a,b){b.procedures.push(this.getAttributeNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16814 this.namespaces.xlink,"href"))},observedProperty:function(a,b){b.observedProperties.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},featureOfInterest:function(a,b){b.featureOfInterestIds.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},responseFormat:function(a,b){b.responseFormats.push(this.getChildValue(a))},resultModel:function(a,b){b.resultModels.push(this.getChildValue(a))},responseMode:function(a,b){b.responseModes.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16815 CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;OpenLayers.Event.isMultiTouch(a)?(this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown):(this.started=!1,this.last=this.start=null);OpenLayers.Event.stop(a);return b},touchmove:function(a){if(this.started&&OpenLayers.Event.isMultiTouch(a)){this.pinching=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16816 !0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}return!0},touchend:function(a){this.started&&(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null);return!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16817 !1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0],a=a[1];return Math.sqrt(Math.pow(b.clientX-a.clientX,2)+Math.pow(b.clientY-a.clientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.Navigation,new OpenLayers.Control.ZoomBox])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:!1,interval:0,timer:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(!0===this.layer.visibility&&this.start(),this.layer.events.on({visibilitychanged:this.reset,scope:this}));return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.stop();return a},reset:function(){!0===this.layer.visibility?this.start():this.stop()},start:function(){this.interval&&("number"===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16818 typeof this.interval&&0<this.interval)&&(this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval))},refresh:function(){this.layer&&(this.layer.refresh&&"function"==typeof this.layer.refresh)&&this.layer.refresh({force:this.force})},stop:function(){null!==this.timer&&(window.clearInterval(this.timer),this.timer=null)},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:!0,initialize:function(a,b,c,d){var e=[],c=OpenLayers.Util.upperCaseObject(c);e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()){if(null==d||!d.isBaseLayer)this.isBaseLayer=!1;"jpg"==this.params.FORMAT&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16819 (this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png")}},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.projection.getCode().split(":"),b=b[b.length-1],c=this.getImageSize(),a={BBOX:a.toBBOX(),SIZE:c.w+","+c.h,F:"image",BBOXSR:b,IMAGESR:b};if(this.layerDefs){var b=[],d;for(d in this.layerDefs)this.layerDefs.hasOwnProperty(d)&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16820 this.layerDefs[d]&&(b.push(d),b.push(":"),b.push(this.layerDefs[d]),b.push(";"));0<b.length&&(a.LAYERDEFS=b.join(""))}return this.getFullRequestString(a)},setLayerFilter:function(a,b){this.layerDefs||(this.layerDefs={});b?this.layerDefs[a]=b:delete this.layerDefs[a]},clearLayerFilter:function(a){a?delete this.layerDefs[a]:delete this.layerDefs},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(a){this.regExes={typeStr:/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,spaces:/\s+/,parenComma:/\)\s*,\s*\(/,doubleParenComma:/\)\s*\)\s*,\s*\(\s*\(/,trimParens:/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b,c,a=a.replace(/[\n\r]/g," ");if(c=this.regExes.typeStr.exec(a))if(a=c[1].toLowerCase(),c=c[2],this.parse[a]&&(b=this.parse[a].apply(this,[c])),this.internalProjection&&this.externalProjection)if(b&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16821 "OpenLayers.Feature.Vector"==b.CLASS_NAME)b.geometry.transform(this.externalProjection,this.internalProjection);else if(b&&"geometrycollection"!=a&&"object"==typeof b){a=0;for(c=b.length;a<c;a++)b[a].geometry.transform(this.externalProjection,this.internalProjection)}return b},write:function(a){var b,c;a.constructor==Array?c=!0:(a=[a],c=!1);var d=[];c&&d.push("GEOMETRYCOLLECTION(");for(var e=0,f=a.length;e<f;++e)c&&0<e&&d.push(","),b=a[e].geometry,d.push(this.extractGeometry(b));c&&d.push(")");return d.join("")},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16822 extractGeometry:function(a){var b=a.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b])return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return("collection"==b?"GEOMETRYCOLLECTION":b.toUpperCase())+"("+this.extract[b].apply(this,[a])+")"},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.point.apply(this,[a.components[c]])+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16823 ")");return b.join(",")},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b.join(",")},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},multipolygon:function(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16824 [],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.polygon.apply(this,[a.components[c]])+")");return b.join(",")},collection:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extractGeometry.apply(this,[a.components[c]]));return b.join(",")}},parse:{point:function(a){a=OpenLayers.String.trim(a).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0],a[1]))},multipoint:function(a){for(var b=OpenLayers.String.trim(a).split(","),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16825 c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.point.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c))},linestring:function(a){for(var a=OpenLayers.String.trim(a).split(","),b=[],c=0,d=a.length;c<d;++c)b.push(this.parse.point.apply(this,[a[c]]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b))},multilinestring:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.parenComma),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16826 c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.linestring.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c))},polygon:function(a){for(var b,a=OpenLayers.String.trim(a).split(this.regExes.parenComma),c=[],d=0,e=a.length;d<e;++d)b=a[d].replace(this.regExes.trimParens,"$1"),b=this.parse.linestring.apply(this,[b]).geometry,b=new OpenLayers.Geometry.LinearRing(b.components),c.push(b);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16827 multipolygon:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.polygon.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c))},geometrycollection:function(a){for(var a=a.replace(/,\s*([A-Za-z])/g,"|$1"),a=OpenLayers.String.trim(a).split("|"),b=[],c=0,d=a.length;c<d;++c)b.push(OpenLayers.Format.WKT.prototype.read.apply(this,[a[c]]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16828 return b}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:!1,px:null,timerId:null,mousemove:function(a){this.passesTolerance(a.xy)&&(this.clearTimer(),this.callback("move",[a]),this.px=a.xy,a=OpenLayers.Util.extend({},a),this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay));return!this.stopMove},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.clearTimer(),this.callback("move",[a]));return!0},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16829 passesTolerance:function(a){var b=!0;this.pixelTolerance&&this.px&&Math.sqrt(Math.pow(this.px.x-a.x,2)+Math.pow(this.px.y-a.y,2))<this.pixelTolerance&&(b=!1);return b},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null)},delayedCall:function(a){this.callback("pause",[a])},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:!1,click:!0,single:!0,clickout:!0,toggle:!1,clickTolerance:5,hover:!1,box:!1,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,initialize:function(a){a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.features={};this.handlers=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16830 {};this.click&&(this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{}));this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"})));this.hover&&(this.handlers.hover=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{delay:250,pixelTolerance:2})))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16831 activate:function(){if(!this.active)for(var a in this.handlers)this.handlers[a].activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){if(this.active)for(var a in this.handlers)this.handlers[a].deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},selectClick:function(a){var b=this.pixelToBounds(a.xy);this.setModifiers(a);this.request(b,{single:this.single})},selectBox:function(a){var b;if(a instanceof OpenLayers.Bounds)b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16832 this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);else{if(this.click)return;b=this.pixelToBounds(a)}this.setModifiers(this.handlers.box.dragHandler.evt);this.request(b)},selectHover:function(a){this.request(this.pixelToBounds(a.xy),{single:!0,hover:!0})},cancelHover:function(){this.hoverResponse&&(this.protocol.abort(this.hoverResponse),this.hoverResponse=null,OpenLayers.Element.removeClass(this.map.viewPortDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16833 "olCursorWait"))},request:function(a,b){var b=b||{},c=new OpenLayers.Filter.Spatial({type:this.filterType,value:a});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");c=this.protocol.read({maxFeatures:!0==b.single?this.maxFeatures:void 0,filter:c,callback:function(c){c.success()&&(c.features.length?!0==b.single?this.selectBestFeature(c.features,a.getCenterLonLat(),b):this.select(c.features):b.hover?this.hoverSelect():(this.events.triggerEvent("clickout"),this.clickout&&this.unselectAll()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16834 OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},scope:this});!0==b.hover&&(this.hoverResponse=c)},selectBestFeature:function(a,b,c){c=c||{};if(a.length){for(var b=new OpenLayers.Geometry.Point(b.lon,b.lat),d,e,f,g=Number.MAX_VALUE,h=0;h<a.length&&!(d=a[h],d.geometry&&(f=b.distanceTo(d.geometry,{edge:!1}),f<g&&(g=f,e=d,0==g)));++h);!0==c.hover?this.hoverSelect(e):this.select(e||a)}},setModifiers:function(a){this.modifiers={multiple:this.multiple||this.multipleKey&&a[this.multipleKey],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16835 toggle:this.toggle||this.toggleKey&&a[this.toggleKey]}},select:function(a){!this.modifiers.multiple&&!this.modifiers.toggle&&this.unselectAll();OpenLayers.Util.isArray(a)||(a=[a]);var b=this.events.triggerEvent("beforefeaturesselected",{features:a});if(!1!==b){for(var c=[],d,e=0,f=a.length;e<f;++e)d=a[e],this.features[d.fid||d.id]?this.modifiers.toggle&&this.unselect(this.features[d.fid||d.id]):(b=this.events.triggerEvent("beforefeatureselected",{feature:d}),!1!==b&&(this.features[d.fid||d.id]=d,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16836 c.push(d),this.events.triggerEvent("featureselected",{feature:d})));this.events.triggerEvent("featuresselected",{features:c})}},hoverSelect:function(a){var b=a?a.fid||a.id:null,c=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;c&&c!=b&&(this.events.triggerEvent("outfeature",{feature:this.hoverFeature}),this.hoverFeature=null);b&&b!=c&&(this.events.triggerEvent("hoverfeature",{feature:a}),this.hoverFeature=a)},unselect:function(a){delete this.features[a.fid||a.id];this.events.triggerEvent("featureunselected",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16837 {feature:a})},unselectAll:function(){for(var a in this.features)this.unselect(this.features[a])},setMap:function(a){for(var b in this.handlers)this.handlers[b].setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},pixelToBounds:function(a){var b=a.add(-this.clickTolerance/2,this.clickTolerance/2),a=a.add(this.clickTolerance/2,-this.clickTolerance/2),b=this.map.getLonLatFromPixel(b),a=this.map.getLonLatFromPixel(a);return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\%");a=a.replace(/\\\\\.(\*)?/g,function(a,b){return b?a:"\\\\_"});a=a.replace(/\\\\\.\*/g,"\\\\%");a=a.replace(/(\\)?\.(\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\)?\.\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\./g,".");return a=a.replace(/(\\)?\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16838 "lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){var d=d||{},e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16839 d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16840 c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND){e=0;for(f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d)}else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,element:null,prefix:"",separator:", ",suffix:"",numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.events.register("mousemove",this,this.redraw),this.map.events.register("mouseout",this,this.reset),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16841 this.redraw(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.map.events.unregister("mousemove",this,this.redraw),this.map.events.unregister("mouseout",this,this.reset),this.element.innerHTML="",!0):!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.div.left="",this.div.top="",this.element=this.div);return this.div},redraw:function(a){var b;if(null==a)this.reset();else if(null==this.lastXy||Math.abs(a.xy.x-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16842 this.lastXy.x)>this.granularity||Math.abs(a.xy.y-this.lastXy.y)>this.granularity)this.lastXy=a.xy;else if(b=this.map.getLonLatFromPixel(a.xy))this.displayProjection&&b.transform(this.map.getProjectionObject(),this.displayProjection),this.lastXy=a.xy,a=this.formatOutput(b),a!=this.element.innerHTML&&(this.element.innerHTML=a)},reset:function(){null!=this.emptyString&&(this.element.innerHTML=this.emptyString)},formatOutput:function(a){var b=parseInt(this.numDigits);return this.prefix+a.lon.toFixed(b)+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16843 this.separator+a.lat.toFixed(b)+this.suffix},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{geolocation:navigator.geolocation,bind:!0,watch:!1,geolocationOptions:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return!this.geolocation?(this.events.triggerEvent("locationuncapable"),!1):OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.watch?this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16844 this),this.geolocationOptions):this.getCurrentLocation(),!0):!1},deactivate:function(){this.active&&null!==this.watchId&&this.geolocation.clearWatch(this.watchId);return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},geolocate:function(a){var b=(new OpenLayers.LonLat(a.coords.longitude,a.coords.latitude)).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());this.bind&&this.map.setCenter(b);this.events.triggerEvent("locationupdated",{position:a,point:new OpenLayers.Geometry.Point(b.lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16845 b.lat)})},getCurrentLocation:function(){if(!this.active||this.watch)return!1;this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return!0},failure:function(a){this.events.triggerEvent("locationfailed",{error:a})},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Tile.UTFGrid=OpenLayers.Class(OpenLayers.Tile,{url:null,utfgridResolution:2,json:null,format:null,destroy:function(){this.clear();OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(a)if(this.isLoading?(this.abortLoading(),this.events.triggerEvent("reload")):(this.isLoading=!0,this.events.triggerEvent("loadstart")),this.url=this.layer.getURL(this.bounds),this.layer.useJSONP){var b=new OpenLayers.Protocol.Script({url:this.url,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16846 callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");this.json=a.data},scope:this});b.read();this.request=b}else this.request=OpenLayers.Request.GET({url:this.url,callback:function(a){this.isLoading=false;this.events.triggerEvent("loadend");a.status===200&&this.parseData(a.responseText)},scope:this});else this.unload();return a},abortLoading:function(){this.request&&(this.request.abort(),delete this.request);this.isLoading=!1},getFeatureInfo:function(a,b){var c=null;if(this.json){var d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16847 this.getFeatureId(a,b);null!==d&&(c={id:d,data:this.json.data[d]})}return c},getFeatureId:function(a,b){var c=null;if(this.json){var d=this.utfgridResolution,d=this.indexFromCharCode(this.json.grid[Math.floor(b/d)].charCodeAt(Math.floor(a/d))),e=this.json.keys;!isNaN(d)&&d in e&&(c=e[d])}return c},indexFromCharCode:function(a){93<=a&&a--;35<=a&&a--;return a-32},parseData:function(a){this.format||(this.format=new OpenLayers.Format.JSON);this.json=this.format.read(a)},clear:function(){this.json=null},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16848 CLASS_NAME:"OpenLayers.Tile.UTFGrid"});OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:!0,clearOnDeactivate:!1,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.registry=OpenLayers.Util.extend({moveend:this.getState},this.registry);a={trigger:OpenLayers.Function.bind(this.previousTrigger,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16849 this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(a,this.previousOptions);this.previous=new OpenLayers.Control.Button(a);a={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(a,this.nextOptions);this.next=new OpenLayers.Control.Button(a);this.clear()},onPreviousChange:function(a){a&&!this.previous.active?this.previous.activate():!a&&this.previous.active&&this.previous.deactivate()},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16850 onNextChange:function(a){a&&!this.next.active?this.next.activate():!a&&this.next.active&&this.next.deactivate()},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var a in this)this[a]=null},setMap:function(a){this.map=a;this.next.setMap(a);this.previous.setMap(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw()},previousTrigger:function(){var a=this.previousStack.shift(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16851 b=this.previousStack.shift();void 0!=b?(this.nextStack.unshift(a),this.previousStack.unshift(b),this.restoring=!0,this.restore(b),this.restoring=!1,this.onNextChange(this.nextStack[0],this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1)):this.previousStack.unshift(a);return b},nextTrigger:function(){var a=this.nextStack.shift();void 0!=a&&(this.previousStack.unshift(a),this.restoring=!0,this.restore(a),this.restoring=!1,this.onNextChange(this.nextStack[0],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16852 this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1));return a},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate()},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units}},restore:function(a){var b,c;if(this.map.getProjectionObject()==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16853 a.projection)c=this.map.getZoomForResolution(a.resolution),b=a.center;else{b=a.center.clone();b.transform(a.projection,this.map.getProjectionObject());c=a.units;var d=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;c=this.map.getZoomForResolution((c&&d?OpenLayers.INCHES_PER_UNIT[c]/OpenLayers.INCHES_PER_UNIT[d]:1)*a.resolution)}this.map.setCenter(b,c)},setListeners:function(){this.listeners={};for(var a in this.registry)this.listeners[a]=OpenLayers.Function.bind(function(){if(!this.restoring){this.previousStack.unshift(this.registry[a].apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16854 arguments));if(1<this.previousStack.length)this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);this.previousStack.length>this.limit+1&&this.previousStack.pop();0<this.nextStack.length&&(this.nextStack=[],this.onNextChange(null,0))}return!0},this)},activate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.activate.apply(this)){null==this.listeners&&this.setListeners();for(var b in this.listeners)this.map.events.register(b,this,this.listeners[b]);a=!0;0==this.previousStack.length&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16855 this.initStack()}return a},initStack:function(){this.map.getCenter()&&this.listeners.moveend()},deactivate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.deactivate.apply(this)){for(var b in this.listeners)this.map.events.unregister(b,this,this.listeners[b]);this.clearOnDeactivate&&this.clear();a=!0}return a},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16856 function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16857 b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){var b=OpenLayers.Util.applyDefaults(b,this.options),c=new OpenLayers.Protocol.Response({reqFeatures:a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16858 requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16859 d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){var b=b||{},c=b.url||a.url||this.options.url+"/"+a.fid,b=OpenLayers.Util.applyDefaults(b,this.options),d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16860 return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16861 a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;o.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=m&&b.callback&&(o.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[o]))}var b=OpenLayers.Util.applyDefaults(b,this.options),e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,i,j=[],k=0,l=a.length;k<l;++k)if(h=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16862 a[k],i=g[h.state])i.push(h),j.push(h);var m=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,o=new OpenLayers.Protocol.Response({reqFeatures:j});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(k=h.length-1;0<=k;--k)e.push(this.update(h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16863 for(k=h.length-1;0<=k;--k)e.push(this["delete"](h[k],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:!1,resolution:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,moveend:this.cluster,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16864 scope:this}));return a},cacheFeatures:function(a){var b=!0;this.clustering||(this.clearCache(),this.features=a.features,this.cluster(),b=!1);return b},clearCache:function(){this.features=null},cluster:function(a){if((!a||a.zoomChanged)&&this.features)if(a=this.layer.map.getResolution(),a!=this.resolution||!this.clustersExist()){this.resolution=a;for(var a=[],b,c,d,e=0;e<this.features.length;++e)if(b=this.features[e],b.geometry){c=!1;for(var f=a.length-1;0<=f;--f)if(d=a[f],this.shouldCluster(d,b)){this.addToCluster(d,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16865 b);c=!0;break}c||a.push(this.createCluster(this.features[e]))}this.layer.removeAllFeatures();if(0<a.length){if(1<this.threshold){b=a.slice();a=[];e=0;for(d=b.length;e<d;++e)c=b[e],c.attributes.count<this.threshold?Array.prototype.push.apply(a,c.cluster):a.push(c)}this.clustering=!0;this.layer.addFeatures(a);this.clustering=!1}this.clusters=a}},clustersExist:function(){var a=!1;if(this.clusters&&0<this.clusters.length&&this.clusters.length==this.layer.features.length)for(var a=!0,b=0;b<this.clusters.length;++b)if(this.clusters[b]!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16866 this.layer.features[b]){a=!1;break}return a},shouldCluster:function(a,b){var c=a.geometry.getBounds().getCenterLonLat(),d=b.geometry.getBounds().getCenterLonLat();return Math.sqrt(Math.pow(c.lon-d.lon,2)+Math.pow(c.lat-d.lat,2))/this.resolution<=this.distance},addToCluster:function(a,b){a.cluster.push(b);a.attributes.count+=1},createCluster:function(a){var b=a.geometry.getBounds().getCenterLonLat(),b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon,b.lat),{count:1});b.cluster=[a];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16867 return b},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);a&&(this.cache=[],this.layer.events.on({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this}));return a},deactivate:function(){this.cache=null;this.layer&&this.layer.events&&this.layer.events.un({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16868 return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments)},handleAdd:function(a){if(!this.caching&&this.filter){var b=a.features;a.features=[];for(var c,d=0,e=b.length;d<e;++d)c=b[d],this.filter.evaluate(c)?a.features.push(c):this.cache.push(c)}},handleRemove:function(){this.caching||(this.cache=[])},setFilter:function(a){this.filter=a;a=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});0<this.cache.length&&(this.caching=!0,this.layer.removeFeatures(this.cache.slice()),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16869 this.caching=!1);0<a.length&&(a={features:a},this.handleAdd(a),0<a.features.length&&(this.caching=!0,this.layer.addFeatures(a.features),this.caching=!1))},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(a){var a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.SOS.DEFAULTS),b=OpenLayers.Protocol.SOS["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported SOS version: "+a.version;return new b(a)};OpenLayers.Protocol.SOS.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{xsd:{schema:function(a,b){var c=[],d={};this.readChildNodes(a,{complexTypes:c,customTypes:d});for(var e=a.attributes,f,g,h=0,i=e.length;h<i;++h)f=e[h],g=f.name,0==g.indexOf("xmlns")?this.setNamespace(g.split(":")[1]||"",f.value):b[g]=f.value;b.featureTypes=c;b.targetPrefix=this.namespaceAlias[b.targetNamespace];h=0;for(i=c.length;h<i;++h)e=c[h],f=d[e.typeName],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16870 d[e.typeName]&&(e.typeName=f.name)},complexType:function(a,b){var c={typeName:a.getAttribute("name")};this.readChildNodes(a,c);b.complexTypes.push(c)},complexContent:function(a,b){this.readChildNodes(a,b)},extension:function(a,b){this.readChildNodes(a,b)},sequence:function(a,b){var c={elements:[]};this.readChildNodes(a,c);b.properties=c.elements},element:function(a,b){if(b.elements){for(var c={},d=a.attributes,e,f=0,g=d.length;f<g;++f)e=d[f],c[e.name]=e.value;d=c.type;d||(d={},this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16871 d),c.restriction=d,c.type=d.base);c.localType=(d.base||d).split(":").pop();b.elements.push(c)}b.complexTypes&&(d=a.getAttribute("type"),c=d.split(":").pop(),b.customTypes[c]={name:a.getAttribute("name"),type:d})},simpleType:function(a,b){this.readChildNodes(a,b)},restriction:function(a,b){b.base=a.getAttribute("base");this.readRestriction(a,b)}}},readRestriction:function(a,b){for(var c=a.childNodes,d,e,f=0,g=c.length;f<g;++f)d=c[f],1==d.nodeType&&(e=d.nodeName.split(":").pop(),d=d.getAttribute("value"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16872 b[e]?("string"==typeof b[e]&&(b[e]=[b[e]]),b[e].push(d)):b[e]=d)},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:!1,createGeometryFromItem:function(a){var b=this.getElementsByTagNameNS(a,this.georssns,"point"),c=this.getElementsByTagNameNS(a,this.geons,"lat"),d=this.getElementsByTagNameNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16873 this.geons,"long"),e=this.getElementsByTagNameNS(a,this.georssns,"line"),f=this.getElementsByTagNameNS(a,this.georssns,"polygon"),g=this.getElementsByTagNameNS(a,this.georssns,"where"),a=this.getElementsByTagNameNS(a,this.georssns,"box");if(0<b.length||0<c.length&&0<d.length){0<b.length?(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s+/),2!=c.length&&(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s*,\s*/))):c=[parseFloat(c[0].firstChild.nodeValue),parseFloat(d[0].firstChild.nodeValue)];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16874 var h=new OpenLayers.Geometry.Point(c[1],c[0])}else if(0<e.length){c=OpenLayers.String.trim(this.getChildValue(e[0])).split(/\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.LineString(d)}else if(0<f.length){c=OpenLayers.String.trim(this.getChildValue(f[0])).split(/\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])}else 0<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16875 g.length?(this.gmlParser||(this.gmlParser=new OpenLayers.Format.GML({xy:this.xy})),h=this.gmlParser.parseFeature(g[0]).geometry):0<a.length&&(c=OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\s+/),d=[],3<c.length&&(b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b)),h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16876 h&&(this.internalProjection&&this.externalProjection)&&h.transform(this.externalProjection,this.internalProjection);return h},createFeatureFromItem:function(a){var b=this.createGeometryFromItem(a),c=this._getChildValue(a,"*","title",this.featureTitle),d=this._getChildValue(a,"*","description",this._getChildValue(a,"*","content",this._getChildValue(a,"*","summary",this.featureDescription))),e=this._getChildValue(a,"*","link");if(!e)try{e=this.getElementsByTagNameNS(a,"*","link")[0].getAttribute("href")}catch(f){e=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16877 null}a=this._getChildValue(a,"*","id",null);b=new OpenLayers.Feature.Vector(b,{title:c,description:d,link:e});b.fid=a;return b},_getChildValue:function(a,b,c,d){return(a=this.getElementsByTagNameNS(a,b,c))&&a[0]&&a[0].firstChild&&a[0].firstChild.nodeValue?this.getChildValue(a[0]):void 0==d?"":d},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null,b=this.getElementsByTagNameNS(a,"*","item");0==b.length&&(b=this.getElementsByTagNameNS(a,"*","entry"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16878 for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=this.createFeatureFromItem(b[d]);return c},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNS(this.rssns,"rss");for(var c=0,d=a.length;c<d;c++)b.appendChild(this.createFeatureXML(a[c]))}else b=this.createFeatureXML(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.rssns,"item"),d=this.createElementNS(this.rssns,"title");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16879 d.appendChild(this.createTextNode(a.attributes.title?a.attributes.title:""));var e=this.createElementNS(this.rssns,"description");e.appendChild(this.createTextNode(a.attributes.description?a.attributes.description:""));c.appendChild(d);c.appendChild(e);a.attributes.link&&(d=this.createElementNS(this.rssns,"link"),d.appendChild(this.createTextNode(a.attributes.link)),c.appendChild(d));for(var f in a.attributes)"link"==f||("title"==f||"description"==f)||(d=this.createTextNode(a.attributes[f]),e=f,-1!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16880 f.search(":")&&(e=f.split(":")[1]),e=this.createElementNS(this.featureNS,"feature:"+e),e.appendChild(d),c.appendChild(e));c.appendChild(b);return c},buildGeometryNode:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b;if("OpenLayers.Geometry.Polygon"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:polygon"),b.appendChild(this.buildCoordinatesNode(a.components[0]));else if("OpenLayers.Geometry.LineString"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16881 a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:line"),b.appendChild(this.buildCoordinatesNode(a));else if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:point"),b.appendChild(this.buildCoordinatesNode(a));else throw"Couldn't parse "+a.CLASS_NAME;return b},buildCoordinatesNode:function(a){var b=null;a.components&&(b=a.components);if(b){for(var a=b.length,c=Array(a),d=0;d<a;d++)c[d]=b[d].y+" "+b[d].x;b=c.join(" ")}else b=a.y+" "+a.x;return this.createTextNode(b)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16882 CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16883 var b={};this.readNode(a,b);return b},readers:{wps:{Capabilities:function(a,b){this.readChildNodes(a,b)},ProcessOfferings:function(a,b){b.processOfferings={};this.readChildNodes(a,b.processOfferings)},Process:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion")};this.readChildNodes(a,c);b[c.identifier]=c},Languages:function(a,b){b.languages=[];this.readChildNodes(a,b.languages)},Default:function(a,b){var c={isDefault:!0};this.readChildNodes(a,c);b.push(c)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16884 Supported:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerCenter:null,pinchOrigin:null,currentCenter:null,autoActivate:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},activate:function(){var a=OpenLayers.Control.prototype.activate.apply(this,arguments);a&&(this.map.events.on({moveend:this.updateContainerCenter,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16885 scope:this}),this.updateContainerCenter());return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.apply(this,arguments);this.map&&this.map.events&&this.map.events.un({moveend:this.updateContainerCenter,scope:this});return a},updateContainerCenter:function(){var a=this.map.layerContainerDiv;this.containerCenter={x:parseInt(a.style.left,10)+50,y:parseInt(a.style.top,10)+50}},pinchStart:function(a){this.currentCenter=this.pinchOrigin=a.xy},pinchMove:function(a,b){var c=b.scale,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16886 d=this.containerCenter,e=this.pinchOrigin,f=a.xy,g=Math.round(f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(f.y-e.y+(c-1)*(d.y-e.y));this.applyTransform("translate("+g+"px, "+d+"px) scale("+c+")");this.currentCenter=f},applyTransform:function(a){var b=this.map.layerContainerDiv.style;b["-webkit-transform"]=a;b["-moz-transform"]=a},pinchDone:function(a,b,c){this.applyTransform("");a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16887 this.map.getResolutionForZoom(a),c=this.map.getLonLatFromPixel(this.pinchOrigin),d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:!1,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;this.pinchZoom&&(this.pinchZoom.destroy(),delete this.pinchZoom);OpenLayers.Control.prototype.destroy.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16888 arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.dragPan.activate(),this.handlers.click.activate(),this.pinchZoom.activate(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.dragPan.deactivate(),this.handlers.click.deactivate(),this.pinchZoom.deactivate(),!0):!1},draw:function(){var a={click:this.defaultClick,dblclick:this.defaultDblClick},b=OpenLayers.Util.extend({"double":!0,stopDouble:!0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16889 pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,a,b);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.setCenter(this.map.getLonLatFromViewPortPx(a.xy),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16890 this.map.zoom+1)},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy();delete this.rules},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}return new OpenLayers.Style2(a)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16891 CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(a,b){OpenLayers.Format.GML.prototype.initialize.apply(this,[a]);this.layer=b;this.layer.featureNS&&(this.featureNS=this.layer.featureNS);this.layer.options.geometry_column&&(this.geometryName=this.layer.options.geometry_column);this.layer.options.typename&&(this.featureName=this.layer.options.typename)},write:function(a){var b=this.createElementNS(this.wfsns,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16892 "wfs:Transaction");b.setAttribute("version","1.0.0");b.setAttribute("service","WFS");for(var c=0;c<a.length;c++)switch(a[c].state){case OpenLayers.State.INSERT:b.appendChild(this.insert(a[c]));break;case OpenLayers.State.UPDATE:b.appendChild(this.update(a[c]));break;case OpenLayers.State.DELETE:b.appendChild(this.remove(a[c]))}return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,"feature:"+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16893 this.geometryName);c.appendChild(b);b=this.createElementNS(this.featureNS,"feature:"+this.featureName);b.appendChild(c);for(var d in a.attributes){var c=this.createTextNode(a.attributes[d]),e=d;-1!=d.search(":")&&(e=d.split(":")[1]);e=this.createElementNS(this.featureNS,"feature:"+e);e.appendChild(c);b.appendChild(e)}return b},insert:function(a){var b=this.createElementNS(this.wfsns,"wfs:Insert");b.appendChild(this.createFeatureXML(a));return b},update:function(a){a.fid||OpenLayers.Console.userError(OpenLayers.i18n("noFID"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16894 var b=this.createElementNS(this.wfsns,"wfs:Update");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),e=this.createTextNode(this.geometryName);d.appendChild(e);c.appendChild(d);d=this.createElementNS(this.wfsns,"wfs:Value");e=this.buildGeometryNode(a.geometry);a.layer&&e.setAttribute("srsName",a.layer.projection.getCode());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16895 d.appendChild(e);c.appendChild(d);b.appendChild(c);for(var f in a.attributes)c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),d.appendChild(this.createTextNode(f)),c.appendChild(d),d=this.createElementNS(this.wfsns,"wfs:Value"),d.appendChild(this.createTextNode(a.attributes[f])),c.appendChild(d),b.appendChild(c);c=this.createElementNS(this.ogcns,"ogc:Filter");f=this.createElementNS(this.ogcns,"ogc:FeatureId");f.setAttribute("fid",a.fid);c.appendChild(f);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16896 b.appendChild(c);return b},remove:function(a){if(!a.fid)return OpenLayers.Console.userError(OpenLayers.i18n("noFID")),!1;var b=this.createElementNS(this.wfsns,"wfs:Delete");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.ogcns,"ogc:Filter"),d=this.createElementNS(this.ogcns,"ogc:FeatureId");d.setAttribute("fid",a.fid);c.appendChild(d);b.appendChild(c);return b},destroy:function(){this.layer=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16897 null},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.SLD.v1_0_0_GeoServer=OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0,{version:"1.0.0",profile:"GeoServer",readers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.priority=c)},VendorOption:function(a,b){b.vendorOptions||(b.vendorOptions={});b.vendorOptions[a.getAttribute("name")]=this.getChildValue(a)}},OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.readers),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16898 writers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Priority",a)},VendorOption:function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},value:a.value})},TextSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(this,arguments);!1!==a.graphic&&(a.externalGraphic||a.graphicName)&&this.writeNode("Graphic",a,b);"priority"in a&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16899 this.writeNode("Priority",a.priority,b);return this.addVendorOptions(b,a)},PointSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(this,arguments),a)},LineSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(this,arguments),a)},PolygonSymbolizer:function(a){return this.addVendorOptions(OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16900 arguments),a)}},OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.writers),addVendorOptions:function(a,b){if(b.vendorOptions)for(var c in b.vendorOptions)this.writeNode("VendorOption",{name:c,value:b.vendorOptions[c]},a);return a},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0_GeoServer"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{drawMarker:function(a){var b=this.map.getLayerPxFromLonLat({lon:a.bounds.left,lat:a.bounds.top}),c=this.map.getLayerPxFromLonLat({lon:a.bounds.right,lat:a.bounds.bottom});null==c||null==b?a.display(!1):(b=a.draw(b,{w:Math.max(1,c.x-b.x),h:Math.max(1,c.y-b.y)}),a.drawn||(this.div.appendChild(b),a.drawn=!0))},removeMarker:function(a){OpenLayers.Util.removeItem(this.markers,a);null!=a.div&&a.div.parentNode==this.div&&this.div.removeChild(a.div)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16901 CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{readers:{wfs:OpenLayers.Util.applyDefaults({Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},OnlineResource:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.onlineResource=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16902 c)},Keywords:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.keywords=c.split(", "))},Capability:function(a,b){b.capability={};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetFeature:function(a,b){b.getfeature={href:{},formats:[]};this.readChildNodes(a,b.getfeature)},ResultFormat:function(a,b){for(var c=a.childNodes,d,e=0;e<c.length;e++)d=c[e],1==d.nodeType&&b.formats.push(d.nodeName)},DCPType:function(a,b){this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16903 b)},HTTP:function(a,b){this.readChildNodes(a,b.href)},Get:function(a,b){b.get=a.getAttribute("onlineResource")},Post:function(a,b){b.post=a.getAttribute("onlineResource")},SRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs)},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a;a&&9==a.nodeType&&(a=a.documentElement);var c={};this.readNode(a,c);void 0===c.service&&(a=new OpenLayers.Format.OGCExceptionReport,c.error=a.read(b));return c},readers:{wms:{Service:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16904 b){b.service={};this.readChildNodes(a,b.service)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},BoundingBox:function(a){var b={};b.bbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))];a={x:parseFloat(a.getAttribute("resx")),y:parseFloat(a.getAttribute("resy"))};if(!isNaN(a.x)||!isNaN(a.y))b.res=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16905 a;return b},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},ContactInformation:function(a,b){b.contactInformation={};this.readChildNodes(a,b.contactInformation)},ContactPersonPrimary:function(a,b){b.personPrimary={};this.readChildNodes(a,b.personPrimary)},ContactPerson:function(a,b){b.person=this.getChildValue(a)},ContactOrganization:function(a,b){b.organization=this.getChildValue(a)},ContactPosition:function(a,b){b.position=this.getChildValue(a)},ContactAddress:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16906 b){b.contactAddress={};this.readChildNodes(a,b.contactAddress)},AddressType:function(a,b){b.type=this.getChildValue(a)},Address:function(a,b){b.address=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},StateOrProvince:function(a,b){b.stateOrProvince=this.getChildValue(a)},PostCode:function(a,b){b.postcode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ContactVoiceTelephone:function(a,b){b.phone=this.getChildValue(a)},ContactFacsimileTelephone:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16907 b){b.fax=this.getChildValue(a)},ContactElectronicMailAddress:function(a,b){b.email=this.getChildValue(a)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},Capability:function(a,b){b.capability={nestedLayers:[],layers:[]};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetCapabilities:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16908 b){b.getcapabilities={formats:[]};this.readChildNodes(a,b.getcapabilities)},Format:function(a,b){OpenLayers.Util.isArray(b.formats)?b.formats.push(this.getChildValue(a)):b.format=this.getChildValue(a)},DCPType:function(a,b){this.readChildNodes(a,b)},HTTP:function(a,b){this.readChildNodes(a,b)},Get:function(a,b){b.get={};this.readChildNodes(a,b.get);b.href||(b.href=b.get.href)},Post:function(a,b){b.post={};this.readChildNodes(a,b.post);b.href||(b.href=b.get.href)},GetMap:function(a,b){b.getmap={formats:[]};
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16909 this.readChildNodes(a,b.getmap)},GetFeatureInfo:function(a,b){b.getfeatureinfo={formats:[]};this.readChildNodes(a,b.getfeatureinfo)},Exception:function(a,b){b.exception={formats:[]};this.readChildNodes(a,b.exception)},Layer:function(a,b){var c,d;b.capability?(d=b.capability,c=b):d=b;var e=a.getAttributeNode("queryable"),f=e&&e.specified?a.getAttribute("queryable"):null,g=(e=a.getAttributeNode("cascaded"))&&e.specified?a.getAttribute("cascaded"):null,e=(e=a.getAttributeNode("opaque"))&&e.specified?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16910 a.getAttribute("opaque"):null,h=a.getAttribute("noSubsets"),i=a.getAttribute("fixedWidth"),j=a.getAttribute("fixedHeight"),k=c||{},l=OpenLayers.Util.extend;c={nestedLayers:[],styles:c?[].concat(c.styles):[],srs:c?l({},k.srs):{},metadataURLs:[],bbox:c?l({},k.bbox):{},llbbox:k.llbbox,dimensions:c?l({},k.dimensions):{},authorityURLs:c?l({},k.authorityURLs):{},identifiers:{},keywords:[],queryable:f&&""!==f?"1"===f||"true"===f:k.queryable||!1,cascaded:null!==g?parseInt(g):k.cascaded||0,opaque:e?"1"===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16911 e||"true"===e:k.opaque||!1,noSubsets:null!==h?"1"===h||"true"===h:k.noSubsets||!1,fixedWidth:null!=i?parseInt(i):k.fixedWidth||0,fixedHeight:null!=j?parseInt(j):k.fixedHeight||0,minScale:k.minScale,maxScale:k.maxScale,attribution:k.attribution};b.nestedLayers.push(c);c.capability=d;this.readChildNodes(a,c);delete c.capability;if(c.name&&(f=c.name.split(":"),g=d.request,e=g.getfeatureinfo,0<f.length&&(c.prefix=f[0]),d.layers.push(c),void 0===c.formats&&(c.formats=g.getmap.formats),void 0===c.infoFormats&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16912 e))c.infoFormats=e.formats},Attribution:function(a,b){b.attribution={};this.readChildNodes(a,b.attribution)},LogoURL:function(a,b){b.logo={width:a.getAttribute("width"),height:a.getAttribute("height")};this.readChildNodes(a,b.logo)},Style:function(a,b){var c={};b.styles.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={width:a.getAttribute("width"),height:a.getAttribute("height")};b.legend=c;this.readChildNodes(a,c)},MetadataURL:function(a,b){var c={type:a.getAttribute("type")};b.metadataURLs.push(c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16913 this.readChildNodes(a,c)},DataURL:function(a,b){b.dataURL={};this.readChildNodes(a,b.dataURL)},FeatureListURL:function(a,b){b.featureListURL={};this.readChildNodes(a,b.featureListURL)},AuthorityURL:function(a,b){var c=a.getAttribute("name"),d={};this.readChildNodes(a,d);b.authorityURLs[c]=d.href},Identifier:function(a,b){var c=a.getAttribute("authority");b.identifiers[c]=this.getChildValue(a)},KeywordList:function(a,b){this.readChildNodes(a,b)},SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16914 CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMS_Capabilities:function(a,b){this.readChildNodes(a,b)},LayerLimit:function(a,b){b.layerLimit=parseInt(this.getChildValue(a))},MaxWidth:function(a,b){b.maxWidth=parseInt(this.getChildValue(a))},MaxHeight:function(a,b){b.maxHeight=parseInt(this.getChildValue(a))},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16915 [a,b]);c.srs=a.getAttribute("CRS");b.bbox[c.srs]=c},CRS:function(a,b){this.readers.wms.SRS.apply(this,[a,b])},EX_GeographicBoundingBox:function(a,b){b.llbbox=[];this.readChildNodes(a,b.llbbox)},westBoundLongitude:function(a,b){b[0]=this.getChildValue(a)},eastBoundLongitude:function(a,b){b[2]=this.getChildValue(a)},southBoundLatitude:function(a,b){b[1]=this.getChildValue(a)},northBoundLatitude:function(a,b){b[3]=this.getChildValue(a)},MinScaleDenominator:function(a,b){b.maxScale=parseFloat(this.getChildValue(a)).toPrecision(16)},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16916 MaxScaleDenominator:function(a,b){b.minScale=parseFloat(this.getChildValue(a)).toPrecision(16)},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol"),nearestVal:"1"===a.getAttribute("nearestValue"),multipleVal:"1"===a.getAttribute("multipleValues"),"default":a.getAttribute("default")||"",current:"1"===a.getAttribute("current"),values:this.getChildValue(a).split(",")};b.dimensions[c.name]=c},Keyword:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16917 b){var c={value:this.getChildValue(a),vocabulary:a.getAttribute("vocabulary")};b.keywords&&b.keywords.push(c)}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms),sld:{UserDefinedSymbolization:function(a,b){this.readers.wms.UserDefinedSymbolization.apply(this,[a,b]);b.userSymbols.inlineFeature=1==parseInt(a.getAttribute("InlineFeature"));b.userSymbols.remoteWCS=1==parseInt(a.getAttribute("RemoteWCS"))},DescribeLayer:function(a,b){this.readers.wms.DescribeLayer.apply(this,[a,b])},GetLegendGraphic:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16918 b){this.readers.wms.GetLegendGraphic.apply(this,[a,b])}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{size:null,isBaseLayer:!0,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:null,tierSizeInTiles:null,tierImageSize:null,initialize:function(a,b,c,d){this.initializeZoomify(c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,c,{},d])},initializeZoomify:function(a){var a=a.clone(),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize));this.tierSizeInTiles=[b];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16919 for(this.tierImageSize=[a];a.w>this.standardTileSize||a.h>this.standardTileSize;)a=new OpenLayers.Size(Math.floor(a.w/2),Math.floor(a.h/2)),b=new OpenLayers.Size(Math.ceil(a.w/this.standardTileSize),Math.ceil(a.h/this.standardTileSize)),this.tierSizeInTiles.push(b),this.tierImageSize.push(a);this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier=[0];for(a=1;a<this.numberOfTiers;a++)this.tileCountUpToTier.push(this.tierSizeInTiles[a-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16920 1].w*this.tierSizeInTiles[a-1].h+this.tileCountUpToTier[a-1])},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0},clone:function(a){null==a&&(a=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16921 (b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),c="TileGroup"+Math.floor((c+a*this.tierSizeInTiles[b].w+this.tileCountUpToTier[b])/256)+"/"+b+"-"+c+"-"+a+".jpg",a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},getImageSize:function(){if(0<arguments.length){var a=this.adjustBounds(arguments[0]),b=this.map.getResolution(),c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16922 a.top)/(b*this.tileSize.h)),b=this.map.getZoom(),d=this.standardTileSize,e=this.standardTileSize;c==this.tierSizeInTiles[b].w-1&&(d=this.tierImageSize[b].w%this.standardTileSize);a==this.tierSizeInTiles[b].h-1&&(e=this.tierImageSize[b].h%this.standardTileSize);return new OpenLayers.Size(d,e)}return this.tileSize},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top)},calculateGridLayout:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16923 b,c){var d=c*this.tileSize.w,c=c*this.tileSize.h,e=a.left-b.lon,f=Math.floor(e/d)-this.buffer,a=b.lat-a.top+c,g=Math.floor(a/c)-this.buffer;return{tilelon:d,tilelat:c,tileoffsetlon:b.lon+f*d,tileoffsetlat:b.lat-c*g,tileoffsetx:-(e/d-f)*this.tileSize.w,tileoffsety:(g-a/c)*this.tileSize.h}},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.params.transparent&&!0!=this.params.transparent},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16924 return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var a=this.adjustBounds(a),a=[a.left,a.bottom,a.right,a.top],b=this.getImageSize();return this.getFullRequestString({mapext:a,imgext:a,map_size:[b.w,b.h],imgx:b.w/2,imgy:b.h/2,imgxy:[b.w,b.h]})},getFullRequestString:function(a,b){var c=null==b?this.url:b,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16925 var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);d=c;e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16926 arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16927 setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16928 "olv:shape"}return c},setStyle:function(a,b,c,d){var b=b||a._style,c=c||a._options,e=b.fillColor;if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;b.graphicTitle&&(a.title=b.graphicTitle);var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),i=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16929 g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(i+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];if(c.isFilled){d||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16930 (d=this.createNode("olv:fill",a.id+"_fill"));d.opacity=b.fillOpacity;if("OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",!b.graphicWidth||!b.graphicHeight))d.aspect="atmost";d.parentNode!=a&&a.appendChild(d)}else d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,i,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16931 (a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];if(c.isStroked){if(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle)h.dashstyle=this.dashStyle(b)}else a.stroked=!1,h&&(h.on=!1);"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16932 d){var d=d||a._style,e=d.rotation||0,f,g;if(!d.graphicWidth||!d.graphicHeight){var h=new Image;h.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==h.readyState||"interactive"==h.readyState)f=h.width/h.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);h.src=d.externalGraphic}else{g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var i=Math.round(d.graphicWidth||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16933 g*f),j=Math.round(d.graphicHeight||g);a.style.width=i+"px";a.style.height=j+"px";var k=document.getElementById(a.id+"_image");k||(k=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(k));k.style.width=i+"px";k.style.height=j+"px";k.src=d.externalGraphic;k.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')";k=e*Math.PI/180;e=Math.sin(k);k=Math.cos(k);e="progid:DXImageTransform.Microsoft.Matrix(M11="+k+",M12="+-e+",M21="+e+",M22="+k+",SizingMethod='auto expand')\n";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16934 (k=d.graphicOpacity||d.fillOpacity)&&1!=k&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+k+")\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);i=(new OpenLayers.Bounds(0,0,i,j)).toGeometry();i.rotate(d.rotation,e);i=i.getBounds();a.style.left=Math.round(parseInt(a.style.left)+i.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-i.bottom)+"px"}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16935 (a.fillcolor=b);"none"==c&&a.strokecolor!=c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16936 a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16937 1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16938 b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,i=0;i<e;i++)g=b.components[i],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[i]=" "+h+","+g+" l ";a.path="m"+f.join("")+(c?" x e":" e");return a},drawPolygon:function(a,b){this.setNodeDimension(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16939 b);var c=this.getResolution(),d=[],e,f,g,h,i,j,k,l,m,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;j=i=null;k=0;for(l=g.length;k<l;k++)m=g[k],n=(m.x-this.featureDx)/c-this.offset.x|0,m=m.y/c-this.offset.y|0,n=" "+n+","+m,d.push(n),0==k&&d.push(" l"),h||(i?i!=n&&(j?j!=n&&(h=!0):j=n):i=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16940 "px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16941 (e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16942 "cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16943 importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");for(var a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0),d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16944 0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Control.CacheRead=OpenLayers.Class(OpenLayers.Control,{fetchEvent:"tileloadstart",layers:null,autoActivate:!0,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.register(this.fetchEvent,this,this.fetch)},removeLayer:function(a){a.layer.events.unregister(this.fetchEvent,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16945 this,this.fetch)},fetch:function(a){if(this.active&&window.localStorage&&a.tile instanceof OpenLayers.Tile.Image){var b=a.tile,c=b.url;!b.layer.crossOriginKeyword&&(OpenLayers.ProxyHost&&0===c.indexOf(OpenLayers.ProxyHost))&&(c=OpenLayers.Control.CacheWrite.urlMap[c]);if(c=window.localStorage.getItem("olCache_"+c))b.url=c,"tileerror"===a.type&&b.setImgSrc(c)}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16946 this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheRead"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:"_layer",featureIdentifier:"_feature",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},gmlFormat:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a.documentElement;if(b)var c=this["read_"+b.nodeName],a=c?c.call(this,b):(new OpenLayers.Format.GML(this.options?this.options:{})).read(a);return a},read_msGMLOutput:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16947 [];if(a=this.getSiblingNodesByTagCriteria(a,this.layerIdentifier))for(var c=0,d=a.length;c<d;++c){var e=a[c],f=e.nodeName;e.prefix&&(f=f.split(":")[1]);f=f.replace(this.layerIdentifier,"");if(e=this.getSiblingNodesByTagCriteria(e,this.featureIdentifier))for(var g=0;g<e.length;g++){var h=e[g],i=this.parseGeometry(h),h=this.parseAttributes(h),h=new OpenLayers.Feature.Vector(i.geometry,h,null);h.bounds=i.bounds;h.type=f;b.push(h)}}return b},read_FeatureInfoResponse:function(a){for(var b=[],a=this.getElementsByTagNameNS(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16948 "*","FIELDS"),c=0,d=a.length;c<d;c++){var e=a[c],f={},g,h=e.attributes.length;if(0<h)for(g=0;g<h;g++){var i=e.attributes[g];f[i.nodeName]=i.nodeValue}else{e=e.childNodes;g=0;for(h=e.length;g<h;++g)i=e[g],3!=i.nodeType&&(f[i.getAttribute("name")]=i.getAttribute("value"))}b.push(new OpenLayers.Feature.Vector(null,f,null))}return b},getSiblingNodesByTagCriteria:function(a,b){var c=[],d,e,f,g;if(a&&a.hasChildNodes()){d=a.childNodes;f=d.length;for(var h=0;h<f;h++){for(g=d[h];g&&1!=g.nodeType;)g=g.nextSibling,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16949 h++;e=g?g.nodeName:"";0<e.length&&-1<e.indexOf(b)?c.push(g):(e=this.getSiblingNodesByTagCriteria(g,b),0<e.length&&(0==c.length?c=e:c.push(e)))}}return c},parseAttributes:function(a){var b={};if(1==a.nodeType)for(var a=a.childNodes,c=a.length,d=0;d<c;++d){var e=a[d];if(1==e.nodeType){var f=e.childNodes,e=e.prefix?e.nodeName.split(":")[1]:e.nodeName;if(0==f.length)b[e]=null;else if(1==f.length&&(f=f[0],3==f.nodeType||4==f.nodeType))f=f.nodeValue.replace(this.regExes.trimSpace,""),b[e]=f}}return b},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16950 parseGeometry:function(a){this.gmlFormat||(this.gmlFormat=new OpenLayers.Format.GML);var a=this.gmlFormat.parseFeature(a),b,c=null;a&&(b=a.geometry&&a.geometry.clone(),c=a.bounds&&a.bounds.clone(),a.destroy());return{geometry:b,bounds:c}},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,requestEncoding:"KVP",drillDown:!1,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:!0,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,pending:0,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16951 !0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.request(a.xy,{})},getInfoForHover:function(a){this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(--this.pending,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16952 0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0),this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)if(c=a[d],c instanceof OpenLayers.Layer.WMTS&&c.requestEncoding===this.requestEncoding&&(!this.queryVisible||c.getVisibility()))if(b.push(c),!this.drillDown||this.hover)break;return b},buildRequestOptions:function(a,b){var c=this.map.getLonLatFromPixel(b),d=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16953 a.getURL(new OpenLayers.Bounds(c.lon,c.lat,c.lon,c.lat)),d=OpenLayers.Util.getParameters(d),c=a.getTileInfo(c);OpenLayers.Util.extend(d,{service:"WMTS",version:a.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:c.i,j:c.j});OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:OpenLayers.Util.isArray(a.url)?a.url[0]:a.url,params:OpenLayers.Util.upperCaseObject(d),callback:function(c){this.handleResponse(b,c,a)},scope:this}},request:function(a,b){var b=b||{},c=this.findLayers();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16954 if(0<c.length){for(var d,e,f=0,g=c.length;f<g;f++)e=c[f],d=this.events.triggerEvent("beforegetfeatureinfo",{xy:a,layer:e}),!1!==d&&(++this.pending,d=this.buildRequestOptions(e,a),d=OpenLayers.Request.GET(d),!0===b.hover&&(this.hoverRequest=d));0<this.pending&&OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait")}},handleResponse:function(a,b,c){--this.pending;0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0);if(b.status&&(200>b.status||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16955 300<=b.status))this.events.triggerEvent("exception",{xy:a,request:b,layer:c});else{var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;var e,f;try{e=this.format.read(d)}catch(g){f=!0,this.events.triggerEvent("exception",{xy:a,request:b,error:g,layer:c})}f||this.events.triggerEvent("getfeatureinfo",{text:b.responseText,features:e,request:b,xy:a,layer:c})}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,scope:this}));return a},cacheFeatures:function(a){this.paging||(this.clearCache(),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16956 this.features=a.features,this.pageNext(a))},clearCache:function(){if(this.features)for(var a=0;a<this.features.length;++a)this.features[a].destroy();this.num=this.features=null},pageCount:function(){return Math.ceil((this.features?this.features.length:0)/this.length)},pageNum:function(){return this.num},pageLength:function(a){a&&0<a&&(this.length=a);return this.length},pageNext:function(a){var b=!1;this.features&&(null===this.num&&(this.num=-1),b=this.page((this.num+1)*this.length,a));return b},pagePrevious:function(){var a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16957 !1;this.features&&(null===this.num&&(this.num=this.pageCount()),a=this.page((this.num-1)*this.length));return a},page:function(a,b){var c=!1;if(this.features&&0<=a&&a<this.features.length){var d=Math.floor(a/this.length);d!=this.num&&(this.paging=!0,c=this.features.slice(a,a+this.length),this.layer.removeFeatures(this.layer.features),this.num=d,b&&b.features?b.features=c:this.layer.addFeatures(c),this.paging=!1,c=!0)}return c},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Protocol.CSW.v2_0_2=OpenLayers.Class(OpenLayers.Protocol,{formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.CSWGetRecords.v2_0_2(OpenLayers.Util.extend({},this.formatOptions)))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16958 this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format.write(a.params);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.data=this.parseData(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseData:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16959 a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.CSW.v2_0_2"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMT_MS_Capabilities:function(a,b){this.readChildNodes(a,b)},Keyword:function(a,b){b.keywords&&b.keywords.push(this.getChildValue(a))},DescribeLayer:function(a,b){b.describelayer={formats:[]};this.readChildNodes(a,b.describelayer)},GetLegendGraphic:function(a,b){b.getlegendgraphic={formats:[]};this.readChildNodes(a,b.getlegendgraphic)},GetStyles:function(a,b){b.getstyles=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16960 {formats:[]};this.readChildNodes(a,b.getstyles)},PutStyles:function(a,b){b.putstyles={formats:[]};this.readChildNodes(a,b.putstyles)},UserDefinedSymbolization:function(a,b){var c={supportSLD:1==parseInt(a.getAttribute("SupportSLD")),userLayer:1==parseInt(a.getAttribute("UserLayer")),userStyle:1==parseInt(a.getAttribute("UserStyle")),remoteWFS:1==parseInt(a.getAttribute("RemoteWFS"))};b.userSymbols=c},LatLonBoundingBox:function(a,b){b.llbbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16961 parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))]},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,[a,b]);c.srs=a.getAttribute("SRS");b.bbox[c.srs]=c},ScaleHint:function(a,b){var c=a.getAttribute("min"),d=a.getAttribute("max"),e=Math.pow(2,0.5),f=OpenLayers.INCHES_PER_UNIT.m;b.maxScale=parseFloat((c/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13));b.minScale=parseFloat((d/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16962 Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol")};b.dimensions[c.name]=c},Extent:function(a,b){var c=a.getAttribute("name").toLowerCase();if(c in b.dimensions){c=b.dimensions[c];c.nearestVal="1"===a.getAttribute("nearestValue");c.multipleVal="1"===a.getAttribute("multipleValues");c.current="1"===a.getAttribute("current");c["default"]=a.getAttribute("default")||"";var d=this.getChildValue(a);c.values=d.split(",")}}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16963 OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:!0,visible:!0,numPoints:50,targetSize:200,layerName:null,labelled:!0,labelFormat:"dm",lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(a){a=a||{};a.layerName=a.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[a]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16964 this.labelSymbolizer.stroke=!1;this.labelSymbolizer.fill=!1;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}"},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);this.gratLayer&&(this.gratLayer.destroy(),this.gratLayer=null)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var a=new OpenLayers.Style({},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16965 {rules:[new OpenLayers.Rule({symbolizer:{Point:this.labelSymbolizer,Line:this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({"default":a}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher})}return this.div},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.addLayer(this.gratLayer),this.map.events.register("moveend",this,this.update),this.update(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16966 arguments)?(this.map.events.unregister("moveend",this,this.update),this.map.removeLayer(this.gratLayer),!0):!1},update:function(){var a=this.map.getExtent();if(a){this.gratLayer.destroyFeatures();var b=new OpenLayers.Projection("EPSG:4326"),c=this.map.getProjectionObject(),d=this.map.getResolution();c.proj&&"longlat"==c.proj.projName&&(this.numPoints=1);var e=this.map.getCenter(),f=new OpenLayers.Pixel(e.lon,e.lat);OpenLayers.Projection.transform(f,c,b);for(var e=this.targetSize*d,e=e*e,g,d=0;d<this.intervals.length;++d){g=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16967 this.intervals[d];var h=g/2,i=f.offset({x:-h,y:-h}),h=f.offset({x:h,y:h});OpenLayers.Projection.transform(i,b,c);OpenLayers.Projection.transform(h,b,c);if((i.x-h.x)*(i.x-h.x)+(i.y-h.y)*(i.y-h.y)<=e)break}f.x=Math.floor(f.x/g)*g;f.y=Math.floor(f.y/g)*g;var d=0,e=[f.clone()],h=f.clone(),j;do h=h.offset({x:0,y:g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:0,y:-g}),j=OpenLayers.Projection.transform(h.clone(),b,c),e.push(h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16968 while(a.containsPixel(j)&&1E3>++d);d=0;i=[f.clone()];h=f.clone();do h=h.offset({x:-g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.unshift(h);while(a.containsPixel(j)&&1E3>++d);h=f.clone();do h=h.offset({x:g,y:0}),j=OpenLayers.Projection.transform(h.clone(),b,c),i.push(h);while(a.containsPixel(j)&&1E3>++d);g=[];for(d=0;d<i.length;++d){j=i[d].x;for(var f=[],k=null,l=Math.min(e[0].y,90),h=Math.max(e[e.length-1].y,-90),m=(l-h)/this.numPoints,l=h,h=0;h<=this.numPoints;++h){var n=new OpenLayers.Geometry.Point(j,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16969 l);n.transform(b,c);f.push(n);l+=m;n.y>=a.bottom&&!k&&(k=n)}this.labelled&&(k=new OpenLayers.Geometry.Point(k.x,a.bottom),j={value:j,label:this.labelled?OpenLayers.Util.getFormattedLonLat(j,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}for(h=0;h<e.length;++h)if(l=e[h].y,!(-90>l||90<l)){f=[];d=i[0].x;m=(i[i.length-1].x-d)/this.numPoints;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16970 j=d;k=null;for(d=0;d<=this.numPoints;++d)n=new OpenLayers.Geometry.Point(j,l),n.transform(b,c),f.push(n),j+=m,n.x<a.right&&(k=n);this.labelled&&(k=new OpenLayers.Geometry.Point(a.right,k.y),j={value:l,label:this.labelled?OpenLayers.Util.getFormattedLonLat(l,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(k,j)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}this.gratLayer.addFeatures(g)}},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Layer.UTFGrid=OpenLayers.Class(OpenLayers.Layer.XYZ,{isBaseLayer:!1,projection:new OpenLayers.Projection("EPSG:900913"),useJSONP:!1,tileClass:OpenLayers.Tile.UTFGrid,initialize:function(a){OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,{},a]);this.tileOptions=OpenLayers.Util.extend({utfgridResolution:this.utfgridResolution},this.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.UTFGrid(this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16971 [a])},getFeatureInfo:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureInfo(a.i,a.j));return b},getFeatureId:function(a){var b=null,a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureId(a.i,a.j));return b},CLASS_NAME:"OpenLayers.Layer.UTFGrid"});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:!0,type:"png",useScales:!1,overrideDPI:!1,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.resolutions&&(this.serverResolutions=this.resolutions,this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]));if(this.layerInfo){var d=this.layerInfo,e=new OpenLayers.Bounds(d.fullExtent.xmin,d.fullExtent.ymin,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16972 d.fullExtent.xmax,d.fullExtent.ymax);this.projection="EPSG:"+d.spatialReference.wkid;this.sphericalMercator=102100==d.spatialReference.wkid;this.units="esriFeet"==d.units?"ft":"m";if(d.tileInfo){this.tileSize=new OpenLayers.Size(d.tileInfo.width||d.tileInfo.cols,d.tileInfo.height||d.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(d.tileInfo.origin.x,d.tileInfo.origin.y);var f=new OpenLayers.Geometry.Point(e.left,e.top),e=new OpenLayers.Geometry.Point(e.right,e.bottom);this.useScales?this.scales=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16973 []:this.resolutions=[];this.lods=[];for(var g in d.tileInfo.lods)if(d.tileInfo.lods.hasOwnProperty(g)){var h=d.tileInfo.lods[g];this.useScales?this.scales.push(h.scale):this.resolutions.push(h.resolution);var i=this.getContainingTileCoords(f,h.resolution);h.startTileCol=i.x;h.startTileRow=i.y;i=this.getContainingTileCoords(e,h.resolution);h.endTileCol=i.x;h.endTileRow=i.y;this.lods.push(h)}this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;this.overrideDPI&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16974 d.tileInfo.dpi&&(OpenLayers.DOTS_PER_INCH=d.tileInfo.dpi)}}},getContainingTileCoords:function(a,b){return new OpenLayers.Pixel(Math.max(Math.floor((a.x-this.tileOrigin.lon)/(this.tileSize.w*b)),0),Math.max(Math.floor((this.tileOrigin.lat-a.y)/(this.tileSize.h*b)),0))},calculateMaxExtentWithLOD:function(a){var b=this.tileOrigin.lon+a.startTileCol*this.tileSize.w*a.resolution,c=this.tileOrigin.lat-a.startTileRow*this.tileSize.h*a.resolution;return new OpenLayers.Bounds(b,c-(a.endTileRow-a.startTileRow+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16975 1)*this.tileSize.h*a.resolution,b+(a.endTileCol-a.startTileCol+1)*this.tileSize.w*a.resolution,c)},calculateMaxExtentWithExtent:function(a,b){var c=new OpenLayers.Geometry.Point(a.left,a.top),d=new OpenLayers.Geometry.Point(a.right,a.bottom),c=this.getContainingTileCoords(c,b),d=this.getContainingTileCoords(d,b);return this.calculateMaxExtentWithLOD({resolution:b,startTileCol:c.x,startTileRow:c.y,endTileCol:d.x,endTileRow:d.y})},getUpperLeftTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.left,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16976 this.maxExtent.top),a)},getLowerRightTileCoord:function(a){return this.getContainingTileCoords(new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom),a)},getMaxExtentForResolution:function(a){var b=this.getUpperLeftTileCoord(a),c=this.getLowerRightTileCoord(a),d=this.tileOrigin.lon+b.x*this.tileSize.w*a,e=this.tileOrigin.lat-b.y*this.tileSize.h*a;return new OpenLayers.Bounds(d,e-(c.y-b.y+1)*this.tileSize.h*a,d+(c.x-b.x+1)*this.tileSize.w*a,e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGISCache(this.name,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16977 this.url,this.options));return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},getMaxExtent:function(){return this.maxExtent=this.getMaxExtentForResolution(this.map.getResolution())},getTileOrigin:function(){var a=this.getMaxExtent();return new OpenLayers.LonLat(a.left,a.bottom)},getURL:function(a){var b=this.getResolution(),c=this.tileOrigin.lon+b*this.tileSize.w/2,d=this.tileOrigin.lat-b*this.tileSize.h/2,a=a.getCenterLonLat(),c=Math.round(Math.abs((a.lon-c)/(b*this.tileSize.w))),d=Math.round(Math.abs((d-
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16978 a.lat)/(b*this.tileSize.h))),a=this.map.getZoom();if(this.lods){if(b=this.lods[this.map.getZoom()],c<b.startTileCol||c>b.endTileCol||d<b.startTileRow||d>b.endTileRow)return null}else{var e=this.getUpperLeftTileCoord(b),b=this.getLowerRightTileCoord(b);if(c<e.x||c>=b.x||d<e.y||d>=b.y)return null}b=this.url;e=""+c+d+a;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));this.useArcGISServer?b+="/tile/${z}/${y}/${x}":(c="C"+this.zeroPad(c,8,16),d="R"+this.zeroPad(d,8,16),a="L"+this.zeroPad(a,2,16),b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16979 b+"/${z}/${y}/${x}."+this.type);b=OpenLayers.String.format(b,{x:c,y:d,z:a});return OpenLayers.Util.urlAppend(b,OpenLayers.Util.getParameterString(this.params))},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a},CLASS_NAME:"OpenLayers.Layer.ArcGISCache"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,drillDown:!1,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:!1,url:null,layerUrls:null,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16980 !0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(a.xy,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16981 {})},getInfoForHover:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d,e=a.length-1;0<=e;--e)if(c=a[e],c instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||c.getVisibility()))d=OpenLayers.Util.isArray(c.url)?c.url[0]:c.url,!1===this.drillDown&&!this.url&&(this.url=d),(!0===this.drillDown||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16982 this.urlMatches(d))&&b.push(c);return b},urlMatches:function(a){var b=OpenLayers.Util.isEquivalentUrl(this.url,a);if(!b&&this.layerUrls)for(var c=0,d=this.layerUrls.length;c<d;++c)if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[c],a)){b=!0;break}return b},buildWMSOptions:function(a,b,c,d){for(var e=[],f=[],g=0,h=b.length;g<h;g++)null!=b[g].params.LAYERS&&(e=e.concat(b[g].params.LAYERS),f=f.concat(this.getStyleNames(b[g])));b=b[0];g=this.map.getProjection();(h=b.projection)&&h.equals(this.map.getProjectionObject())&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16983 (g=h.getCode());d=OpenLayers.Util.extend({service:"WMS",version:b.params.VERSION,request:"GetFeatureInfo",exceptions:b.params.EXCEPTIONS,bbox:this.map.getExtent().toBBOX(null,b.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:d,info_format:b.params.INFO_FORMAT||this.infoFormat},1.3<=parseFloat(b.params.VERSION)?{crs:g,i:parseInt(c.x),j:parseInt(c.y)}:{srs:g,x:parseInt(c.x),y:parseInt(c.y)});0!=e.length&&(d=OpenLayers.Util.extend({layers:e,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16984 query_layers:e,styles:f},d));OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:a,params:OpenLayers.Util.upperCaseObject(d),callback:function(b){this.handleResponse(c,b,a)},scope:this}},getStyleNames:function(a){return a.params.STYLES?a.params.STYLES:OpenLayers.Util.isArray(a.params.LAYERS)?Array(a.params.LAYERS.length):a.params.LAYERS.replace(/[^,]/g,"")},request:function(a,b){var c=this.findLayers();if(0==c.length)this.events.triggerEvent("nogetfeatureinfo"),OpenLayers.Element.removeClass(this.map.viewPortDiv,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16985 "olCursorWait");else if(b=b||{},!1===this.drillDown){var c=this.buildWMSOptions(this.url,c,a,c[0].params.FORMAT),d=OpenLayers.Request.GET(c);!0===b.hover&&(this.hoverRequest=d)}else{this._numRequests=this._requestCount=0;this.features=[];for(var d={},e,f=0,g=c.length;f<g;f++){var h=c[f];e=OpenLayers.Util.isArray(h.url)?h.url[0]:h.url;e in d?d[e].push(h):(this._numRequests++,d[e]=[h])}for(e in d)c=d[e],c=this.buildWMSOptions(e,c,a,c[0].params.FORMAT),OpenLayers.Request.GET(c)}},triggerGetFeatureInfo:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16986 b,c){this.events.triggerEvent("getfeatureinfo",{text:a.responseText,features:c,request:a,xy:b});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},handleResponse:function(a,b,c){var d=b.responseXML;if(!d||!d.documentElement)d=b.responseText;d=this.format.read(d);!1===this.drillDown?this.triggerGetFeatureInfo(b,a,d):(this._requestCount++,this._features="object"===this.output?(this._features||[]).concat({url:c,features:d}):(this._features||[]).concat(d),this._requestCount===this._numRequests&&
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16987 (this.triggerGetFeatureInfo(b,a,this._features.concat()),delete this._features,delete this._requestCount,delete this._numRequests))},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a){"string"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16988 typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={features:[]};this.readNode(a,b);for(var a=[],c=0,d=b.features.length;c<d;c++){var e=b.features[c];this.internalProjection&&(this.externalProjection&&e.components[0])&&e.components[0].transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(e.components[0],e.attributes);a.push(e)}return a},readers:{sa:{SamplingPoint:function(a,b){if(!b.attributes){var c=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16989 {attributes:{}};b.features.push(c);b=c}b.attributes.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},position:function(a,b){this.readChildNodes(a,b)}},gml:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,b){this.readChildNodes(a,b)},featureMember:function(a,b){var c={attributes:{}};b.features.push(c);this.readChildNodes(a,c)},name:function(a,b){b.attributes.name=this.getChildValue(a)},pos:function(a,b){this.externalProjection||(this.externalProjection=new OpenLayers.Projection(a.getAttribute("srsName")));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16990 OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[a,b])}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{sos:{GetFeatureOfInterest:function(a){for(var b=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:"SOS","xsi:schemaLocation":this.schemaLocation}}),c=0,d=a.fois.length;c<d;c++)this.writeNode("FeatureOfInterestId",{foi:a.fois[c]},b);return b},FeatureOfInterestId:function(a){return this.createElementNSPlus("FeatureOfInterestId",{value:a.foi})}}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16991 CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16992 defaultPrefix:"sos",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={measurements:[],observations:[]};this.readNode(a,b);return b},write:function(a){a=this.writeNode("sos:GetObservation",a);a.setAttribute("xmlns:om",this.namespaces.om);a.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16993 [a])},readers:{om:{ObservationCollection:function(a,b){b.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},member:function(a,b){this.readChildNodes(a,b)},Measurement:function(a,b){var c={};b.measurements.push(c);this.readChildNodes(a,c)},Observation:function(a,b){var c={};b.observations.push(c);this.readChildNodes(a,c)},samplingTime:function(a,b){var c={};b.samplingTime=c;this.readChildNodes(a,c)},observedProperty:function(a,b){b.observedProperty=this.getAttributeNS(a,this.namespaces.xlink,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16994 "href");this.readChildNodes(a,b)},procedure:function(a,b){b.procedure=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)},featureOfInterest:function(a,b){var c={features:[]};b.fois=[];b.fois.push(c);this.readChildNodes(a,c);for(var d=[],e=0,f=c.features.length;e<f;e++){var g=c.features[e];d.push(new OpenLayers.Feature.Vector(g.components[0],g.attributes))}c.features=d},result:function(a,b){var c={};b.result=c;""!==this.getChildValue(a)?(c.value=this.getChildValue(a),c.uom=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16995 a.getAttribute("uom")):this.readChildNodes(a,c)}},sa:OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,gml:OpenLayers.Util.applyDefaults({TimeInstant:function(a,b){var c={};b.timeInstant=c;this.readChildNodes(a,c)},timePosition:function(a,b){b.timePosition=this.getChildValue(a)}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{sos:{GetObservation:function(a){var b=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:"SOS"}});this.writeNode("offering",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16996 a,b);a.eventTime&&this.writeNode("eventTime",a,b);for(var c in a.procedures)this.writeNode("procedure",a.procedures[c],b);for(var d in a.observedProperties)this.writeNode("observedProperty",a.observedProperties[d],b);a.foi&&this.writeNode("featureOfInterest",a.foi,b);this.writeNode("responseFormat",a,b);a.resultModel&&this.writeNode("resultModel",a,b);a.responseMode&&this.writeNode("responseMode",a,b);return b},featureOfInterest:function(a){var b=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16997 a.objectId,b);return b},ObjectID:function(a){return this.createElementNSPlus("ObjectID",{value:a})},responseFormat:function(a){return this.createElementNSPlus("responseFormat",{value:a.responseFormat})},procedure:function(a){return this.createElementNSPlus("procedure",{value:a})},offering:function(a){return this.createElementNSPlus("offering",{value:a.offering})},observedProperty:function(a){return this.createElementNSPlus("observedProperty",{value:a})},eventTime:function(a){var b=this.createElementNSPlus("eventTime");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16998 "latest"===a.eventTime&&this.writeNode("ogc:TM_Equals",a,b);return b},resultModel:function(a){return this.createElementNSPlus("resultModel",{value:a.resultModel})},responseMode:function(a){return this.createElementNSPlus("responseMode",{value:a.responseMode})}},ogc:{TM_Equals:function(a){var b=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},b);"latest"===a.eventTime&&this.writeNode("gml:TimeInstant",{value:"latest"},b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
16999 {value:a.property})}},gml:{TimeInstant:function(a){var b=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",a,b);return b},timePosition:function(a){return this.createElementNSPlus("gml:timePosition",{value:a.value})}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.UTFGrid=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,layers:null,defaultHandlerOptions:{delay:300,pixelTolerance:4,stopMove:!1,single:!0,"double":!1,stopSingle:!1,stopDouble:!1},handlerMode:"click",setHandler:function(a){this.handlerMode=a;this.resetHandler()},resetHandler:function(){this.handler&&(this.handler.deactivate(),this.handler.destroy(),this.handler=null);"hover"==this.handlerMode?this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.reset},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17000 this.handlerOptions):"click"==this.handlerMode?this.handler=new OpenLayers.Handler.Click(this,{click:this.handleEvent},this.handlerOptions):"move"==this.handlerMode&&(this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.handleEvent},this.handlerOptions));return this.handler?!0:!1},initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||this.defaultHandlerOptions;OpenLayers.Control.prototype.initialize.apply(this,[a]);this.resetHandler()},handleEvent:function(a){if(null==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17001 a)this.reset();else{var b=this.map.getLonLatFromPixel(a.xy);if(b){var c=this.findLayers();if(0<c.length){for(var d={},e,f,g=0,h=c.length;g<h;g++)e=c[g],f=OpenLayers.Util.indexOf(this.map.layers,e),d[f]=e.getFeatureInfo(b);this.callback(d,b,a.xy)}}}},callback:function(){},reset:function(){this.callback(null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)c=a[d],c instanceof OpenLayers.Layer.UTFGrid&&b.push(c);return b},CLASS_NAME:"OpenLayers.Control.UTFGrid"});OpenLayers.Format.CQL=function(){function a(a){function b(){var a=e.pop();switch(a.type){case "LOGICAL":var c=b(),g=b();return new OpenLayers.Filter.Logical({filters:[g,c],type:f[a.text.toUpperCase()]});case "NOT":return c=b(),new OpenLayers.Filter.Logical({filters:[c],type:OpenLayers.Filter.Logical.NOT});case "BETWEEN":return e.pop(),g=b(),a=b(),c=b(),new OpenLayers.Filter.Comparison({property:c,lowerBoundary:a,upperBoundary:g,type:OpenLayers.Filter.Comparison.BETWEEN});case "COMPARISON":return g=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17002 b(),c=b(),new OpenLayers.Filter.Comparison({property:c,value:g,type:d[a.text.toUpperCase()]});case "VALUE":return/^'.*'$/.test(a.text)?a.text.substr(1,a.text.length-2):Number(a.text);case "SPATIAL":switch(a.text.toUpperCase()){case "BBOX":var c=b(),a=b(),g=b(),h=b(),i=b();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:i,value:OpenLayers.Bounds.fromArray([h,g,a,c])});case "INTERSECTS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17003 property:c,value:g});case "WITHIN":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:c,value:g});case "CONTAINS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:c,value:g});case "DWITHIN":return a=b(),g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:g,property:c,distance:Number(a)})}case "GEOMETRY":return OpenLayers.Geometry.fromWKT(a.text);default:return a.text}}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17004 for(var c=[],e=[];a.length;){var g=a.shift();switch(g.type){case "PROPERTY":case "GEOMETRY":case "VALUE":e.push(g);break;case "COMPARISON":case "BETWEEN":case "LOGICAL":for(var i=h[g.type];0<c.length&&h[c[c.length-1].type]<=i;)e.push(c.pop());c.push(g);break;case "SPATIAL":case "NOT":case "LPAREN":c.push(g);break;case "RPAREN":for(;0<c.length&&"LPAREN"!=c[c.length-1].type;)e.push(c.pop());c.pop();0<c.length&&"SPATIAL"==c[c.length-1].type&&e.push(c.pop());case "COMMA":case "END":break;default:throw Error("Unknown token type "+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17005 g.type);}}for(;0<c.length;)e.push(c.pop());a=b();if(0<e.length){a="Remaining tokens after building AST: \n";for(c=e.length-1;0<=c;c--)a+=e[c].type+": "+e[c].text+"\n";throw Error(a);}return a}var b={PROPERTY:/^[_a-zA-Z]\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^('\w+'|\d+(\.\d*)?|\.\d+)/,LPAREN:/^\(/,RPAREN:/^\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(a){var b=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(a);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17006 if(b){var c=a.length,b=a.indexOf("(",b[0].length);if(-1<b)for(var d=1;b<c&&0<d;)switch(b++,a.charAt(b)){case "(":d++;break;case ")":d--}return[a.substr(0,b+1)]}},END:/^$/},c={LPAREN:["GEOMETRY","SPATIAL","PROPERTY","VALUE","LPAREN"],RPAREN:["NOT","LOGICAL","END","RPAREN"],PROPERTY:["COMPARISON","BETWEEN","COMMA"],BETWEEN:["VALUE"],COMPARISON:["VALUE"],COMMA:["GEOMETRY","VALUE","PROPERTY"],VALUE:["LOGICAL","COMMA","RPAREN","END"],SPATIAL:["LPAREN"],LOGICAL:["NOT","VALUE","SPATIAL","PROPERTY","LPAREN"],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17007 NOT:["PROPERTY","LPAREN"],GEOMETRY:["COMMA","RPAREN"]},d={"=":OpenLayers.Filter.Comparison.EQUAL_TO,"<>":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<":OpenLayers.Filter.Comparison.LESS_THAN,"<=":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,">":OpenLayers.Filter.Comparison.GREATER_THAN,">=":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,LIKE:OpenLayers.Filter.Comparison.LIKE,BETWEEN:OpenLayers.Filter.Comparison.BETWEEN},e={},f={AND:OpenLayers.Filter.Logical.AND,OR:OpenLayers.Filter.Logical.OR},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17008 g={},h={RPAREN:3,LOGICAL:2,COMPARISON:1},i;for(i in d)d.hasOwnProperty(i)&&(e[d[i]]=i);for(i in f)f.hasOwnProperty(i)&&(g[f[i]]=i);return OpenLayers.Class(OpenLayers.Format,{read:function(d){var e=d,d=[],f,g=["NOT","GEOMETRY","SPATIAL","PROPERTY","LPAREN"];do{a:{f=g;for(var h=void 0,g=void 0,i=f.length,h=0;h<i;h++){var g=f[h],p=b[g]instanceof RegExp?b[g].exec(e):(0,b[g])(e);if(p){f=p[0];e=e.substr(f.length).replace(/^\s*/,"");f={type:g,text:f,remainder:e};break a}}d="ERROR: In parsing: ["+e+"], expected one of: ";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17009 for(h=0;h<i;h++)g=f[h],d+="\n "+g+": "+b[g];throw Error(d);}e=f.remainder;g=c[f.type];if("END"!=f.type&&!g)throw Error("No follows list for "+f.type);d.push(f)}while("END"!=f.type);d=a(d);this.keepData&&(this.data=d);return d},write:function(a){if(a instanceof OpenLayers.Geometry)return a.toString();switch(a.CLASS_NAME){case "OpenLayers.Filter.Spatial":switch(a.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+a.property+","+a.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17010 a.property+", "+this.write(a.value)+", "+a.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+a.property+", "+this.write(a.value)+")";default:throw Error("Unknown spatial filter type: "+a.type);}case "OpenLayers.Filter.Logical":if(a.type==OpenLayers.Filter.Logical.NOT)return"NOT ("+this.write(a.filters[0])+
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17011 ")";for(var b="(",c=!0,d=0;d<a.filters.length;d++)c?c=!1:b+=") "+g[a.type]+" (",b+=this.write(a.filters[d]);return b+")";case "OpenLayers.Filter.Comparison":return a.type==OpenLayers.Filter.Comparison.BETWEEN?a.property+" BETWEEN "+this.write(a.lowerBoundary)+" AND "+this.write(a.upperBoundary):a.property+" "+e[a.type]+" "+this.write(a.value);case void 0:if("string"===typeof a)return"'"+a+"'";if("number"===typeof a)return""+a;default:throw Error("Can't encode: "+a.CLASS_NAME+" "+a);}},CLASS_NAME:"OpenLayers.Format.CQL"})}();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{layer:null,source:null,sourceOptions:null,tolerance:null,edge:!0,deferDelete:!1,mutual:!0,targetFilter:null,sourceFilter:null,handler:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.source&&this.setSource(this.options.source)},setSource:function(a){this.active?(this.deactivate(),this.handler&&(this.handler.destroy(),delete this.handler),this.source=a,this.activate()):this.source=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17012 a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)if(this.source){if(this.source.events)this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this})}else this.handler||(this.handler=new OpenLayers.Handler.Path(this,{done:function(a){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(a)})}},{layerOptions:this.sourceOptions})),this.handler.activate();return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17013 a&&this.source&&this.source.events&&this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},onSketchComplete:function(a){this.feature=null;return!this.considerSplit(a.feature)},afterFeatureModified:function(a){a.modified&&"function"===typeof a.feature.geometry.split&&(this.feature=a.feature,this.considerSplit(a.feature))},removeByGeometry:function(a,b){for(var c=0,d=a.length;c<d;++c)if(a[c].geometry===b){a.splice(c,1);break}},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17014 isEligible:function(a){return a.geometry?a.state!==OpenLayers.State.DELETE&&"function"===typeof a.geometry.split&&this.feature!==a&&(!this.targetFilter||this.targetFilter.evaluate(a.attributes)):!1},considerSplit:function(a){var b=!1,c=!1;if(!this.sourceFilter||this.sourceFilter.evaluate(a.attributes)){for(var d=this.layer&&this.layer.features||[],e,f,g=[],h=[],i=this.layer===this.source&&this.mutual,j={edge:this.edge,tolerance:this.tolerance,mutual:i},k=[a.geometry],l,m,n,o=0,p=d.length;o<p;++o)if(l=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17015 d[o],this.isEligible(l)){m=[l.geometry];for(var q=0;q<k.length;++q){n=k[q];for(var r=0;r<m.length;++r)if(e=m[r],n.getBounds().intersectsBounds(e.getBounds())&&(e=n.split(e,j)))if(f=this.events.triggerEvent("beforesplit",{source:a,target:l}),!1!==f&&(i&&(f=e[0],1<f.length&&(f.unshift(q,1),Array.prototype.splice.apply(k,f),q+=f.length-3),e=e[1]),1<e.length))e.unshift(r,1),Array.prototype.splice.apply(m,e),r+=e.length-3}m&&1<m.length&&(this.geomsToFeatures(l,m),this.events.triggerEvent("split",{original:l,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17016 features:m}),Array.prototype.push.apply(g,m),h.push(l),c=!0)}k&&1<k.length&&(this.geomsToFeatures(a,k),this.events.triggerEvent("split",{original:a,features:k}),Array.prototype.push.apply(g,k),h.push(a),b=!0);if(b||c){if(this.deferDelete){d=[];o=0;for(p=h.length;o<p;++o)c=h[o],c.state===OpenLayers.State.INSERT?d.push(c):(c.state=OpenLayers.State.DELETE,this.layer.drawFeature(c));this.layer.destroyFeatures(d,{silent:!0});o=0;for(p=g.length;o<p;++o)g[o].state=OpenLayers.State.INSERT}else this.layer.destroyFeatures(h,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17017 {silent:!0});this.layer.addFeatures(g,{silent:!0});this.events.triggerEvent("aftersplit",{source:a,features:g})}}return b},geomsToFeatures:function(a,b){var c=a.clone();delete c.geometry;for(var d,e=0,f=b.length;e<f;++e)d=c.clone(),d.geometry=b[e],d.state=OpenLayers.State.INSERT,b[e]=d},destroy:function(){this.active&&this.deactivate();OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17018 {url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property '"+c+"' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0]){b=this.matrixIds;this.matrixIds=Array(a);for(c=0;c<a;++c)this.matrixIds[c]=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17019 {identifier:b[c]}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties()},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())if(this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),!this.tileFullExtent)this.tileFullExtent=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17020 this.maxExtent},moveTo:function(a,b,c){(b||!this.matrix)&&this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){var a;if(!this.matrixIds||0===this.matrixIds.length)a={identifier:this.getIdentifier()};else if("scaleDenominator"in this.matrixIds[0])for(var b=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17021 OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.getServerResolution()/2.8E-4,c=Number.POSITIVE_INFINITY,d,e=0,f=this.matrixIds.length;e<f;++e)d=Math.abs(1-this.matrixIds[e].scaleDenominator/b),d<c&&(c=d,a=this.matrixIds[e]);else a=this.matrixIds[this.getIdentifier()];return a},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w),a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h),b=Math.floor(c),d=Math.floor(a);return{col:b,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17022 row:d,i:Math.floor((c-b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){var a=this.adjustBounds(a),b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){var c=this.getTileInfo(a.getCenterLonLat()),a=this.dimensions;if("REST"===this.requestEncoding.toUpperCase())if(b=this.params,"string"===typeof this.url&&-1!==this.url.indexOf("{")){var d=this.url.replace(/\{/g,"${"),c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17023 TileRow:c.row,TileCol:c.col};if(a){var e,f;for(f=a.length-1;0<=f;--f)e=a[f],c[e]=b[e.toUpperCase()]}b=OpenLayers.String.format(d,c)}else{d=this.version+"/"+this.layer+"/"+this.style+"/";if(a)for(f=0;f<a.length;f++)b[a[f]]&&(d=d+b[a[f]]+"/");d=d+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b=OpenLayers.Util.isArray(this.url)?this.selectUrl(d,this.url):this.url;b.match(/\/$/)||(b+="/");b+=d}else"KVP"===this.requestEncoding.toUpperCase()&&(b={SERVICE:"WMTS",REQUEST:"GetTile",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17024 VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[b]))}return b},mergeNewParams:function(a){if("KVP"===this.requestEncoding.toUpperCase())return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17025 {});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format,c=OpenLayers.Format.XML.prototype.write.apply(c,[c.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.features=this.parseFeatures(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17026 b.callback.call(b.scope,a)}},parseFeatures:function(a){var b=a.responseXML;if(!b||!b.documentElement)b=a.responseText;return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{jpeg:"jpg",gif:"gif",png:"png",png8:"png",png24:"png",dithered:"png"},DEFAULT_FORMAT:"jpeg",initialize:function(a,b,c,d){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||this.DEFAULT_FORMAT]},getURL:function(a){var a=this.adjustBounds(a),b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b),a=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17027 -Math.round(a.top/b),b=Math.floor(d/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w,e=Math.floor(a/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h,c=["/",this.params.map,"/",c,"/",this.params.g.replace(/\s/g,"_"),"/def/t",e,"/l",b,"/t",a,"l",d,".",this.extension],d=this.url;OpenLayers.Util.isArray(d)&&(d=this.selectUrl(c.join(""),d));return d+c.join("")},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(a){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);this.outputFormat&&!this.readFormat&&("gml2"==this.outputFormat.toLowerCase()?this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName}):"json"==this.outputFormat.toLowerCase()&&(this.readFormat=new OpenLayers.Format.GeoJSON))},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",readers:{wms:OpenLayers.Util.applyDefaults({VendorSpecificCapabilities:function(a,b){b.vendorSpecific={tileSets:[]};this.readChildNodes(a,b.vendorSpecific)},TileSet:function(a,b){var c={srs:{},bbox:{},resolutions:[]};this.readChildNodes(a,c);b.tileSets.push(c)},Resolutions:function(a,b){for(var c=this.getChildValue(a).split(" "),d=0,e=c.length;d<e;d++)""!=c[d]&&b.resolutions.push(parseFloat(c[d]))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17028 Width:function(a,b){b.width=parseInt(this.getChildValue(a))},Height:function(a,b){b.height=parseInt(this.getChildValue(a))},Layers:function(a,b){b.layers=this.getChildValue(a)},Styles:function(a,b){b.styles=this.getChildValue(a)}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){for(var c=this.getChildValue(a).split(/ +/),d=0,e=c.length;d<e;d++)b.srs[c[d]]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:!1,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];this.roundedCorner&&OpenLayers.Console.warn("roundedCorner option is deprecated")},destroy:function(){this.clearLayersArray("base");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17029 this.clearLayersArray("data");this.map.events.un({buttonclick:this.onButtonClick,addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17030 scope:this});this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();this.outsideViewport||this.minimizeControl();this.redraw();return this.div},onButtonClick:function(a){a=a.buttonElement;a===this.minimizeDiv?this.minimizeControl():a===this.maximizeDiv?this.maximizeControl():a._layerSwitcher===
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17031 this.id&&(a["for"]&&(a=document.getElementById(a["for"])),a.disabled||("radio"==a.type?(a.checked=!0,this.map.setBaseLayer(this.map.getLayer(a._layer))):(a.checked=!a.checked,this.updateMap())))},clearLayersArray:function(a){this[a+"LayersDiv"].innerHTML="";this[a+"Layers"]=[]},checkRedraw:function(){var a=!1;if(!this.layerStates.length||this.map.layers.length!=this.layerStates.length)a=!0;else for(var b=0,c=this.layerStates.length;b<c;b++){var d=this.layerStates[b],e=this.map.layers[b];if(d.name!=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17032 e.name||d.inRange!=e.inRange||d.id!=e.id||d.visibility!=e.visibility){a=!0;break}}return a},redraw:function(){if(!this.checkRedraw())return this.div;this.clearLayersArray("base");this.clearLayersArray("data");var a=!1,b=!1,c=this.map.layers.length;this.layerStates=Array(c);for(var d=0;d<c;d++){var e=this.map.layers[d];this.layerStates[d]={name:e.name,visibility:e.visibility,inRange:e.inRange,id:e.id}}var f=this.map.layers.slice();this.ascending||f.reverse();d=0;for(c=f.length;d<c;d++){var e=f[d],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17033 g=e.isBaseLayer;if(e.displayInLayerSwitcher){g?b=!0:a=!0;var h=g?e==this.map.baseLayer:e.getVisibility(),i=document.createElement("input");i.id=this.id+"_input_"+e.name;i.name=g?this.id+"_baseLayers":e.name;i.type=g?"radio":"checkbox";i.value=e.name;i.checked=h;i.defaultChecked=h;i.className="olButton";i._layer=e.id;i._layerSwitcher=this.id;!g&&!e.inRange&&(i.disabled=!0);h=document.createElement("label");h["for"]=i.id;OpenLayers.Element.addClass(h,"labelSpan olButton");h._layer=e.id;h._layerSwitcher=
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17034 this.id;!g&&!e.inRange&&(h.style.color="gray");h.innerHTML=e.name;h.style.verticalAlign=g?"bottom":"baseline";var j=document.createElement("br");(g?this.baseLayers:this.dataLayers).push({layer:e,inputElem:i,labelSpan:h});e=g?this.baseLayersDiv:this.dataLayersDiv;e.appendChild(i);e.appendChild(h);e.appendChild(j)}}this.dataLbl.style.display=a?"":"none";this.baseLbl.style.display=b?"":"none";return this.div},updateMap:function(){for(var a=0,b=this.baseLayers.length;a<b;a++){var c=this.baseLayers[a];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17035 c.inputElem.checked&&this.map.setBaseLayer(c.layer,!1)}a=0;for(b=this.dataLayers.length;a<b;a++)c=this.dataLayers[a],c.layer.setVisibility(c.inputElem.checked)},maximizeControl:function(a){this.div.style.width="";this.div.style.height="";this.showControls(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.div.style.width="0px";this.div.style.height="0px";this.showControls(!0);null!=a&&OpenLayers.Event.stop(a)},showControls:function(a){this.maximizeDiv.style.display=a?"":"none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17036 this.minimizeDiv.style.display=a?"none":"";this.layersDiv.style.display=a?"none":""},loadContents:function(){this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17037 this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");this.ascending?(this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv),this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv)):(this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17038 this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv));this.div.appendChild(this.layersDiv);this.roundedCorner&&(OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:!1}),OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75));var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,null,a,"absolute");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17039 OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv olButton");this.maximizeDiv.style.display="none";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv olButton");this.minimizeDiv.style.display="none";this.div.appendChild(this.minimizeDiv)},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:!1,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));return this.parseFeatures(a)},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNSPlus("atom:feed");b.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17040 for(var c=0,d=a.length;c<d;c++)b.appendChild(this.buildEntryNode(a[c]))}else b=this.buildEntryNode(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},buildContentNode:function(a){var b=this.createElementNSPlus("atom:content",{attributes:{type:a.type||null}});if(a.src)b.setAttribute("src",a.src);else if("text"==a.type||null==a.type)b.appendChild(this.createTextNode(a.value));else if("html"==a.type){if("string"!=typeof a.value)throw"HTML content must be in form of an escaped string";b.appendChild(this.createTextNode(a.value))}else"xhtml"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17041 a.type?b.appendChild(a.value):"xhtml"==a.type||a.type.match(/(\+|\/)xml$/)?b.appendChild(a.value):b.appendChild(this.createTextNode(a.value));return b},buildEntryNode:function(a){var b=a.attributes,c=b.atom||{},d=this.createElementNSPlus("atom:entry");if(c.authors)for(var e=OpenLayers.Util.isArray(c.authors)?c.authors:[c.authors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("author",e[f]));if(c.categories)for(var e=OpenLayers.Util.isArray(c.categories)?c.categories:[c.categories],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17042 h,f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:h.term,scheme:h.scheme||null,label:h.label||null}}));c.content&&d.appendChild(this.buildContentNode(c.content));if(c.contributors){e=OpenLayers.Util.isArray(c.contributors)?c.contributors:[c.contributors];f=0;for(g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("contributor",e[f]))}a.fid&&d.appendChild(this.createElementNSPlus("atom:id",{value:a.fid}));if(c.links){e=OpenLayers.Util.isArray(c.links)?
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17043 c.links:[c.links];f=0;for(g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:h.href,rel:h.rel||null,type:h.type||null,hreflang:h.hreflang||null,title:h.title||null,length:h.length||null}}))}c.published&&d.appendChild(this.createElementNSPlus("atom:published",{value:c.published}));c.rights&&d.appendChild(this.createElementNSPlus("atom:rights",{value:c.rights}));if(c.summary||b.description)d.appendChild(this.createElementNSPlus("atom:summary",{value:c.summary||
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17044 b.description}));d.appendChild(this.createElementNSPlus("atom:title",{value:c.title||b.title||this.defaultEntryTitle}));c.updated&&d.appendChild(this.createElementNSPlus("atom:updated",{value:c.updated}));a.geometry&&(b=this.createElementNSPlus("georss:where"),b.appendChild(this.buildGeometryNode(a.geometry)),d.appendChild(b));return d},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17045 externalProjection:this.externalProjection})},buildGeometryNode:function(a){this.gmlParser||this.initGmlParser();return this.gmlParser.writeNode("feature:_geometry",a).firstChild},buildPersonConstructNode:function(a,b){var c=["uri","email"],d=this.createElementNSPlus("atom:"+a);d.appendChild(this.createElementNSPlus("atom:name",{value:b.name}));for(var e=0,f=c.length;e<f;e++)b[c[e]]&&d.appendChild(this.createElementNSPlus("atom:"+c[e],{value:b[c[e]]}));return d},getFirstChildValue:function(a,b,c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17046 d){return(a=this.getElementsByTagNameNS(a,b,c))&&0<a.length?this.getChildValue(a[0],d):d},parseFeature:function(a){var b={},c=null,d=null,e=null,f=this.namespaces.atom;this.parsePersonConstructs(a,"author",b);d=this.getElementsByTagNameNS(a,f,"category");0<d.length&&(b.categories=[]);for(var g=0,h=d.length;g<h;g++){c={};c.term=d[g].getAttribute("term");if(e=d[g].getAttribute("scheme"))c.scheme=e;if(e=d[g].getAttribute("label"))c.label=e;b.categories.push(c)}d=this.getElementsByTagNameNS(a,f,"content");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17047 if(0<d.length){c={};if(e=d[0].getAttribute("type"))c.type=e;(e=d[0].getAttribute("src"))?c.src=e:(c.value="text"==c.type||"html"==c.type||null==c.type?this.getFirstChildValue(a,f,"content",null):"xhtml"==c.type||c.type.match(/(\+|\/)xml$/)?this.getChildEl(d[0]):this.getFirstChildValue(a,f,"content",null),b.content=c)}this.parsePersonConstructs(a,"contributor",b);b.id=this.getFirstChildValue(a,f,"id",null);d=this.getElementsByTagNameNS(a,f,"link");0<d.length&&(b.links=Array(d.length));for(var i=["rel",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17048 "type","hreflang","title","length"],g=0,h=d.length;g<h;g++){c={};c.href=d[g].getAttribute("href");for(var j=0,k=i.length;j<k;j++)(e=d[g].getAttribute(i[j]))&&(c[i[j]]=e);b.links[g]=c}if(c=this.getFirstChildValue(a,f,"published",null))b.published=c;if(c=this.getFirstChildValue(a,f,"rights",null))b.rights=c;if(c=this.getFirstChildValue(a,f,"summary",null))b.summary=c;b.title=this.getFirstChildValue(a,f,"title",null);b.updated=this.getFirstChildValue(a,f,"updated",null);c={title:b.title,description:b.summary,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17049 atom:b};a=this.parseLocations(a)[0];a=new OpenLayers.Feature.Vector(a,c);a.fid=b.id;return a},parseFeatures:function(a){var b=[],c=this.getElementsByTagNameNS(a,this.namespaces.atom,"entry");0==c.length&&(c=[a]);for(var a=0,d=c.length;a<d;a++)b.push(this.parseFeature(c[a]));return b},parseLocations:function(a){var b=this.namespaces.georss,c={components:[]},d=this.getElementsByTagNameNS(a,b,"where");if(d&&0<d.length){this.gmlParser||this.initGmlParser();for(var e=0,f=d.length;e<f;e++)this.gmlParser.readChildNodes(d[e],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17050 c)}c=c.components;if((d=this.getElementsByTagNameNS(a,b,"point"))&&0<d.length){e=0;for(f=d.length;e<f;e++){var g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s+/);2!=g.length&&(g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s*,\s*/));c.push(new OpenLayers.Geometry.Point(g[1],g[0]))}}var h=this.getElementsByTagNameNS(a,b,"line");if(h&&0<h.length)for(var i,e=0,f=h.length;e<f;e++){d=OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\s+/);i=[];for(var j=0,k=d.length;j<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17051 k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.LineString(i))}if((a=this.getElementsByTagNameNS(a,b,"polygon"))&&0<a.length){e=0;for(f=a.length;e<f;e++){d=OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\s+/);i=[];j=0;for(k=d.length;j<k;j+=2)g=new OpenLayers.Geometry.Point(d[j+1],d[j]),i.push(g);c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(c)]))}}if(this.internalProjection&&this.externalProjection){e=0;for(f=c.length;e<
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17052 f;e++)c[e]&&c[e].transform(this.externalProjection,this.internalProjection)}return c},parsePersonConstructs:function(a,b,c){for(var d=[],e=this.namespaces.atom,a=this.getElementsByTagNameNS(a,e,b),f=["uri","email"],g=0,h=a.length;g<h;g++){var i={};i.name=this.getFirstChildValue(a[g],e,"name",null);for(var j=0,k=f.length;j<k;j++){var l=this.getFirstChildValue(a[g],e,f[j],null);l&&(i[f[j]]=l)}d.push(i)}0<d.length&&(c[b+"s"]=d)},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,slideFactor:75,observeElement:null,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{keydown:this.defaultKeyPress},{observeElement:this.observeElement||document})},defaultKeyPress:function(a){var b,c=!0;switch(a.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17053 -this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:b=this.map.getSize();this.map.pan(0,-0.75*b.h);break;case 34:b=this.map.getSize();this.map.pan(0,0.75*b.h);break;case 35:b=this.map.getSize();this.map.pan(0.75*b.w,0);break;case 36:b=this.map.getSize();this.map.pan(-0.75*b.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;default:c=!1}c&&OpenLayers.Event.stop(a)},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17054 typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[],layers:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17055 b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrix:function(a,b){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17056 c);b.matrixIds.push(c)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){var c=this.getChildValue(a).split(" "),d;b.supportedCRS&&(d=!!this.yx[b.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2")]);b.topLeftCorner=d?new OpenLayers.LonLat(c[1],c[0]):new OpenLayers.LonLat(c[0],c[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17057 MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};b.resourceUrl[a.getAttribute("resourceType")]={format:a.getAttribute("format"),template:a.getAttribute("template")}},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17058 LegendURL:function(a,b){b.legend={};b.legend.href=a.getAttribute("xlink:href");b.legend.format=a.getAttribute("format")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17059 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17060 * Tooltips.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17061 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17062 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17063 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17064 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17065 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17066 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17067 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17068 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17069 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17070 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17071 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17072 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17073 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17074 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17075 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17076 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17077 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17078 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17079
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17080 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17081 * Tooltips JSON
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17082 * GeoTemCo tooltips definition file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17083 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17084 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17085 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17086 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17087 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17088 var Tooltips = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17089 "en" : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17090 "locationType" : "Location type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17091 "selectLocationType" : "Select location type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17092 "mapType" : "Background map",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17093 "selectMapType" : "Select background map",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17094 "selectOverlay" : "Select layer for spatial filtering",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17095 "overlays" : "Select layer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17096 "mapSelectorTools" : "Map selector tools",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17097 "overlaySelector" : "Selection layer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17098 "square" : "Square selection: Mouse down for the center and mouse move to set square bounds",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17099 "circle" : "Circle selection: Mouse down for the center and mouse move to set circle radius",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17100 "polygon" : "Polygon selection: Click to add vertex and double click to complete the polygon",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17101 "country" : "Country selection: Click inside the political borders of a country",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17102 "singleEntry" : "Only 1 entry available",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17103 "resultsLocation" : "with location information",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17104 "home" : "Reset map to initial view",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17105 "zoomIn" : "Zoom in",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17106 "zoomOut" : "Zoom out",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17107 "zoomSlider" : "Zoom slider",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17108 "dragSelection" : "Drag&Drop shape",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17109 "zoomSelection" : "Zoom into selection",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17110 "clearSelection" : "Clear selection",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17111 "contemporaryMap" : "Contemporary Map",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17112 "activateGeoLocation" : "Show my location",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17113 "deactivateGeoLocation" : "Hide my location",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17114 "mapOf" : "Map of",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17115 "close" : "Close",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17116 "genericBinning" : "delaunay",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17117 "squareBinning" : "square",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17118 "hexagonalBinning" : "hexagonal",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17119 "triangularBinning" : "triangular",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17120 "noBinning" : "none",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17121 "selectBinningType" : "Select aggregation type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17122 "binningType" : "Aggregation type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17123 "binningTooltip" : "Select the aggregation type for the data sources",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17124 "results" : "results",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17125 "result" : "result",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17126 "timeType" : "Time type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17127 "timeUnit" : "Time unit:",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17128 "selectTimeType" : "Select time type",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17129 "timeAnimation" : "Animation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17130 "resultsTime" : "with time information",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17131 "animationDisabled" : "Animation control (disabled)",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17132 "animationPlay" : "Animate selected time range",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17133 "animationPause" : "Pause animation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17134 "leftHandle" : "Drag&Drop left border",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17135 "rightHandle" : "Drag&Drop right border",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17136 "dragTimeRange" : "Drag&Drop time range",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17137 "connectionsOn" : "Switch on time-dependent connections between map circles",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17138 "connectionsOff" : "Switch off time-dependent connections",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17139 "timeFeather" : "Adjust time range feather to smoothen map animations",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17140 "allResults" : "all",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17141 "pageInfo" : "Page PAGE_ID of PAGES_ID",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17142 "resultsInfo" : "RESULTS_FROM_ID-RESULTS_TO_ID of RESULTS_ID Results",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17143 "otherResults" : "others",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17144 "mapAggregation" : "Aggregation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17145 "aggregation" : "Circle aggregation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17146 "noAggregation" : "No circle aggregation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17147 "showBoxTitle" : "Boundingbox",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17148 "showBbox" : "Shows given Boundingbox extension",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17149 "hideBbox" : "Hides given Boundingbox extension",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17150 "spaceHelp" : "A point on the map corresponds to one or more objects from the result list. ",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17151 "timeHelp" : "On the timeline are the search results sorted by year. You can choose different time-based categories as basis for the representation.",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17152 "selectTablePageItemsHelp" : "Click to select all rows of this page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17153 "deselectTablePageItemsHelp" : "Click to deselect all rows of this page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17154 "selectAllTableItemsHelp" : "Click to select all rows of the table",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17155 "deselectAllTableItemsHelp" : "Click to deselect all rows of the table",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17156 "filter" : "Filter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17157 "filterSelectedItemsHelp" : "Filter the selected items",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17158 "inverseFilterSelectedItemsHelp" : "Apply an inverse filter on the selected items removing them from the views",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17159 "undoFilterSelection" : "Undo the last filter / inverse filter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17160 "cancelSelection" : "Discard the current selection (all items appear as deselected)",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17161 "showSelectedHelp" : "Show only elements within the selection",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17162 "showAllElementsHelp" : "Show all elements",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17163 "paginationFirsPageHelp" : "Show first page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17164 "paginationPreviousPageHelp" : "Show previous page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17165 "paginationNextPageHelp" : "Show next page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17166 "paginationLastPageHelp" : "Show last page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17167 "sortAZHelp" : "Sort table elements ascending according this column",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17168 "sortZAHelp" : "Sort table elements descending according this column",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17169 "paginationDropdownHelp" : "Select number of elements per page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17170 "selectTimeUnit" : "Select Time Unit",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17171 "valueScale" : "Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17172 "linearPlot" : "Linear Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17173 "logarithmicPlot" : "Logarithmic Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17174 "playButton" : "Animate Selected Range",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17175 "pauseButton" : "Pause Animation"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17176 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17177 "de" : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17178 "locationType" : "Ortsfacette",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17179 "selectLocationType" : "W&auml;hle Ortsfacette",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17180 "mapType" : "Kartentyp",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17181 "selectMapType" : "W&auml;hle Kartentyp",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17182 "selectOverlay" : "Kartenauswahl f&uuml;r r&auml;mliches filtern",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17183 "overlays" : "W&auml;hle layer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17184 "mapSelectorTools" : "Bereichsauswahl",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17185 "overlaySelector" : "Selection layer",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17186 "square" : "Quadratauswahl: Maus ziehen und loslassen um Mittelpunkt und Seitenl&auml;nge des Quadrats zu bestimmen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17187 "circle" : "Kreisauswahl: Maus ziehen und loslassen um Mittelpunkt und Radius des Kreises zu bestimmen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17188 "polygon" : "Polygonauswahl: Mausklick zum Hinzuf&uuml;gen eines Eckpunktes, Doppelklick zum Fertigstellen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17189 "country" : "Landauswahl: Mausklick innerhalb politischer Grenze eines Landes",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17190 "singleEntry" : "Nur 1 Eintrag vorhanden",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17191 "resultsLocation" : "mit Geoinformation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17192 "home" : "Zur&uuml;cksetzen zur initialen Sicht",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17193 "zoomIn" : "Vergr&ouml;&szlig;ern",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17194 "zoomOut" : "Verkleinern",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17195 "zoomSlider" : "Zoomregler",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17196 "dragSelection" : "Verschiebe Auswahl",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17197 "zoomSelection" : "Vergr&ouml;&szlig;ere Auswahl",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17198 "clearSelection" : "Entferne Auswahlbereich",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17199 "contemporaryMap" : "Aktuelle Weltkarte",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17200 "activateGeoLocation" : "Meinen Standort anzeigen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17201 "deactivateGeoLocation" : "Meinen Standort ausblenden",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17202 "mapOf" : "Karte von",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17203 "close" : "Schliessen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17204 "genericBinning" : "Generisch",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17205 "squareBinning" : "Quadrate",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17206 "hexagonalBinning" : "Hexagone",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17207 "triangularBinning" : "Dreiecke",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17208 "noBinning" : "Keine Bins",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17209 "selectBinningType" : "W&auml;hle Binningart",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17210 "binningTooltip" : "W&aunl;hle die Binninart f�r die Datenquellen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17211 "binningType" : "Binningart",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17212 "results" : "Resultate",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17213 "result" : "Resultat",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17214 "timeType" : "Zeitfacette",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17215 "timeUnit" : "Zeiteinheit",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17216 "selectTimeType" : "W&auml;hle Zeitfacette",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17217 "timeAnimation" : "Animation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17218 "resultsTime" : "mit Zeitinformation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17219 "animationDisabled" : "Animationswerkzeug (deaktiviert)",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17220 "animationPlay" : "Animiere ausgew&auml;hlten Zeitbereich",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17221 "animationPause" : "Animation anhalten",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17222 "leftHandle" : "Verschiebe linke Grenze",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17223 "rightHandle" : "Verschiebe rechte Grenze",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17224 "dragTimeRange" : "Verschiebe Zeitbereich",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17225 "connectionsOn" : "Aktiviere zeitabhängige Verbindungen zwischen Kreisen auf der Karte",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17226 "connectionsOff" : "Deaktiviere zeitabhängige Verbindungen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17227 "timeFeather" : "Ver&auml;ndere Zeitbereichs&uuml;berg&auml;nge zum Gl&auml;tten der Animation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17228 "pageInfo" : "Seite PAGE_ID von PAGES_ID",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17229 "resultsInfo" : "RESULTS_FROM_ID-RESULTS_TO_ID von RESULTS_ID Ergebnissen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17230 "allResults" : "alle",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17231 "otherResults" : "sonstige",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17232 "mapAggregation" : "Aggregation",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17233 "aggregation" : "Kreise aggregiert",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17234 "noAggregation" : "Kreise nicht aggregiert",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17235 "showBbox" : "Geografische Ausdehnung anzeigen",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17236 "hideBbox" : "Geografische Ausdehnung ausblenden",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17237 "spaceHelp" : "Jeder Punkt auf der Karte entspricht einem oder mehreren Objekten der Ergebnisliste. Sie k&ouml;nnen verschiedene ortsbezogene Kategorien als Grundlage f&uuml;r die Darstellung w&auml;hlen (Auswahlfeld <strong>Ortsfacette</strong>) und verschiedene Kartentypen. <br> Da es Objekte geben kann, die keine Ortsangabe in ihrer Beschreibung enthalten, ist die Menge der in der Karte dargestellten Objekte in der Regel kleiner als in der Ergebnisliste (Anzahl darstellbarer Objekte siehe rechts oben über der Karte). <br> Mit der Karte können Sie die Suchergebnisse weiter eingrenzen, indem Sie auf einen der Punkte klicken. Wählen Sie einen Ort aus und klicken Sie auf die kleine Lupe, um die Ergebnisliste so einzuschränken, dass nur noch die diesem Ort zugeordneten Objekte als Suchergebnis erscheinen. Mehr zur Karte im Benutzerhandbuch ...",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17238 "timeHelp" : "In der Zeitleiste sind die Suchergebnisse nach Jahren geordnet. Sie k&ouml;nnen verschiedene zeitbezogene Kategorien als Grundlage f&uuml;r die Darstellung w&auml;hlen (Auswahlfeld <strong>Zeitfacette</strong>). <br> Da es Objekte geben kann, die keine Zeitangabe in ihrer Beschreibung enthalten, ist die Zahl der in der Zeitleiste dargestellten Objekte in der Regel kleiner als in der Ergebnisliste. Die Angabe über darstellbare Objekte finden Sie rechts über der Zeitleiste. <br>Mit der Zeitleiste können Sie die Suchergebnisse weiter eingrenzen. Wählen Sie ein Jahr oder einen Zeitraum durch Klicken und Ziehen und klicken Sie auf die kleine Lupe. Die Ergebnisliste zeigt nur noch die Objekte in diesem Zeitraum. Mehr zur Zeitleiste im Benutzerhandbuch ...",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17239 "selectTablePageItemsHelp" : "Click to select all rows of this page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17240 "deselectTablePageItemsHelp" : "Click to deselect all rows of this page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17241 "selectAllTableItemsHelp" : "Click to select all rows of the table",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17242 "deselectAllTableItemsHelp" : "Click to deselect all rows of the table",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17243 "filter" : "Filter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17244 "filterSelectedItemsHelp" : "Filter the selected items",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17245 "inverseFilterSelectedItemsHelp" : "Apply an inverse filter on the selected items removing them from the views",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17246 "undoFilterSelection" : "Undo the last filter / inverse filter",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17247 "cancelSelection" : "Discard the current selection (all items appear as deselected)",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17248 "showSelectedHelp" : "Show only elements within the selection",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17249 "showAllElementsHelp" : "Show all elements",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17250 "paginationFirsPageHelp" : "Show first page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17251 "paginationPreviousPageHelp" : "Show previous page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17252 "paginationNextPageHelp" : "Show next page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17253 "paginationLastPageHelp" : "Show last page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17254 "sortAZHelp" : "Sort table elements ascending according this column",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17255 "sortZAHelp" : "Sort table elements descending according this column",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17256 "paginationDropdownHelp" : "Select number of elements per page",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17257 "selectTimeUnit" : "W�hle Zeitinervalle",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17258 "valueScale" : "Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17259 "linearPlot" : "Linear Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17260 "logarithmicPlot" : "Logarithmic Value Scale",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17261 "playButton" : "Animate Selected Range",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17262 "pauseButton" : "Pause Animation"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17263 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17264 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17265 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17266 * GeoTemConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17267 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17268 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17269 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17270 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17271 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17272 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17273 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17274 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17275 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17276 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17277 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17278 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17279 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17280 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17281 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17282 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17283 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17284 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17285
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17286 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17287 * @class GeoTemConfig
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17288 * Global GeoTemCo Configuration File
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17289 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17290 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17291 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17292 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17293 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17294
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17295 var GeoTemConfig = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17296
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17297 incompleteData : true, // show/hide data with either temporal or spatial metadata
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17298 inverseFilter : true, // if inverse filtering is offered
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17299 mouseWheelZoom : true, // enable/disable zoom with mouse wheel on map & timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17300 language : 'en', // default language of GeoTemCo
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17301 allowFilter : true, // if filtering should be allowed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17302 //colors for several datasets; rgb1 will be used for selected objects, rgb0 for unselected
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17303 colors : [{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17304 r1 : 255,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17305 g1 : 101,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17306 b1 : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17307 r0 : 253,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17308 g0 : 229,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17309 b0 : 205
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17310 }, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17311 r1 : 144,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17312 g1 : 26,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17313 b1 : 255,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17314 r0 : 230,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17315 g0 : 225,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17316 b0 : 255
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17317 }, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17318 r1 : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17319 g1 : 217,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17320 b1 : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17321 r0 : 213,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17322 g0 : 255,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17323 b0 : 213
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17324 }, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17325 r1 : 240,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17326 g1 : 220,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17327 b1 : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17328 r0 : 247,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17329 g0 : 244,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17330 b0 : 197
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17331 }]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17332
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17333 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17335 GeoTemConfig.ie = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17336 GeoTemConfig.ie8 = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17338 if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17339 GeoTemConfig.ie = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17340 var ieversion = new Number(RegExp.$1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17341 if (ieversion == 8) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17342 GeoTemConfig.ie8 = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17343 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17344 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17345
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17346 GeoTemConfig.configure = function(urlPrefix) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17347 GeoTemConfig.urlPrefix = urlPrefix;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17348 GeoTemConfig.path = GeoTemConfig.urlPrefix + "images/";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17349 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17350
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17351 GeoTemConfig.applySettings = function(settings) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17352 $.extend(this, settings);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17353 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17354
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17355 GeoTemConfig.getColor = function(id){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17356 if( GeoTemConfig.colors.length <= id ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17357 GeoTemConfig.colors.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17358 r1 : Math.floor((Math.random()*255)+1),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17359 g1 : Math.floor((Math.random()*255)+1),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17360 b1 : Math.floor((Math.random()*255)+1),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17361 r0 : 230,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17362 g0 : 230,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17363 b0 : 230
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17364 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17365 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17366 return GeoTemConfig.colors[id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17367 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17369 GeoTemConfig.getString = function(field) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17370 if ( typeof Tooltips[GeoTemConfig.language] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17371 GeoTemConfig.language = 'en';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17372 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17373 return Tooltips[GeoTemConfig.language][field];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17374 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17375 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17376 * returns the actual mouse position
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17377 * @param {Event} e the mouseevent
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17378 * @return the top and left position on the screen
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17379 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17380 GeoTemConfig.getMousePosition = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17381 if (!e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17382 e = window.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17384 var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17385 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17386 top : e.pageY ? e.pageY : e.clientY,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17387 left : e.pageX ? e.pageX : e.clientX
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17388 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17389 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17390 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17391 * returns the json object of the file from the given url
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17392 * @param {String} url the url of the file to load
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17393 * @return json object of given file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17394 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17395 GeoTemConfig.getJson = function(url) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17396 var data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17397 $.ajax({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17398 url : url,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17399 async : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17400 dataType : 'json',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17401 success : function(json) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17402 data = json;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17403 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17404 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17405 return data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17406 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17407
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17408 GeoTemConfig.mergeObjects = function(set1, set2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17409 var inside = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17410 var newSet = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17411 for (var i = 0; i < set1.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17412 inside.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17413 newSet.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17414 for (var j = 0; j < set1[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17415 inside[i][set1[i][j].index] = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17416 newSet[i].push(set1[i][j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17417 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17418 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17419 for (var i = 0; i < set2.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17420 for (var j = 0; j < set2[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17421 if (!inside[i][set2[i][j].index]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17422 newSet[i].push(set2[i][j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17423 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17424 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17425 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17426 return newSet;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17428 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17429 * returns the xml dom object of the file from the given url
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17430 * @param {String} url the url of the file to load
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17431 * @return xml dom object of given file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17432 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17433 GeoTemConfig.getKml = function(url,asyncFunc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17434 var data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17435 var async = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17436 if( asyncFunc ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17437 async = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17438 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17439 $.ajax({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17440 url : url,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17441 async : async,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17442 dataType : 'xml',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17443 success : function(xml) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17444 if( asyncFunc ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17445 asyncFunc(xml);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17446 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17447 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17448 data = xml;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17449 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17450 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17451 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17452 if( !async ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17453 return data;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17454 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17455 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17456
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17457 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17458 * returns a Date and a SimileAjax.DateTime granularity value for a given XML time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17459 * @param {String} xmlTime the XML time as String
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17460 * @return JSON object with a Date and a SimileAjax.DateTime granularity
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17461 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17462 GeoTemConfig.getTimeData = function(xmlTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17463 if (!xmlTime)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17464 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17465 var dateData;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17466 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17467 var bc = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17468 if (xmlTime.startsWith("-")) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17469 bc = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17470 xmlTime = xmlTime.substring(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17471 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17472 var timeSplit = xmlTime.split("T");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17473 var timeData = timeSplit[0].split("-");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17474 for (var i = 0; i < timeData.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17475 parseInt(timeData[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17476 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17477 if (bc) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17478 timeData[0] = "-" + timeData[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17479 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17480 if (timeSplit.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17481 dateData = timeData;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17482 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17483 var dayData;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17484 if (timeSplit[1].indexOf("Z") != -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17485 dayData = timeSplit[1].substring(0, timeSplit[1].indexOf("Z") - 1).split(":");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17486 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17487 dayData = timeSplit[1].substring(0, timeSplit[1].indexOf("+") - 1).split(":");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17488 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17489 for (var i = 0; i < timeData.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17490 parseInt(dayData[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17491 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17492 dateData = timeData.concat(dayData);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17493 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17494 } catch (exception) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17495 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17496 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17497 var date, granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17498 if (dateData.length == 6) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17499 granularity = SimileAjax.DateTime.SECOND;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17500 date = new Date(Date.UTC(dateData[0], dateData[1] - 1, dateData[2], dateData[3], dateData[4], dateData[5]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17501 } else if (dateData.length == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17502 granularity = SimileAjax.DateTime.DAY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17503 date = new Date(Date.UTC(dateData[0], dateData[1] - 1, dateData[2]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17504 } else if (dateData.length == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17505 granularity = SimileAjax.DateTime.MONTH;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17506 date = new Date(Date.UTC(dateData[0], dateData[1] - 1, 1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17507 } else if (dateData.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17508 granularity = SimileAjax.DateTime.YEAR;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17509 date = new Date(Date.UTC(dateData[0], 0, 1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17510 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17511 if (timeData[0] && timeData[0] < 100) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17512 date.setFullYear(timeData[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17513 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17514 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17515 date : date,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17516 granularity : granularity
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17517 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17518 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17519 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17520 * converts a JSON array into an array of data objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17521 * @param {JSON} JSON a JSON array of data items
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17522 * @return an array of data objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17523 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17524 GeoTemConfig.loadJson = function(JSON) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17525 var mapTimeObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17526 var runningIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17527 for (var i in JSON ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17528 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17529 var item = JSON[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17530 var index = item.index || item.id || runningIndex++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17531 var name = item.name || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17532 var description = item.description || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17533 var tableContent = item.tableContent || [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17534 var locations = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17535 if (item.location instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17536 for (var j = 0; j < item.location.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17537 var place = item.location[j].place || "unknown";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17538 var lon = item.location[j].lon || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17539 var lat = item.location[j].lat || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17540 if ((lon == "" || lat == "" || isNaN(lon) || isNaN(lat) ) && !GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17541 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17542 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17543 locations.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17544 longitude : lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17545 latitude : lat,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17546 place : place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17547 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17548 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17549 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17550 var place = item.place || "unknown";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17551 var lon = item.lon || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17552 var lat = item.lat || "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17553 if ((lon == "" || lat == "" || isNaN(lon) || isNaN(lat) ) && !GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17554 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17556 locations.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17557 longitude : lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17558 latitude : lat,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17559 place : place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17560 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17561 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17562 var dates = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17563 if (item.time instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17564 for (var j = 0; j < item.time.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17565 var time = GeoTemConfig.getTimeData(item.time[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17566 if (time == null && !GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17567 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17568 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17569 dates.push(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17570 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17571 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17572 var time = GeoTemConfig.getTimeData(item.time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17573 if (time == null && !GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17574 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17575 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17576 if (time != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17577 dates.push(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17579 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17580 var weight = item.weight || 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17581 var mapTimeObject = new DataObject(name, description, locations, dates, weight, tableContent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17582 mapTimeObject.setIndex(index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17583 mapTimeObjects.push(mapTimeObject);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17584 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17585 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17586 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17587 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17588
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17589 return mapTimeObjects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17590 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17591 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17592 * converts a KML dom into an array of data objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17593 * @param {XML dom} kml the XML dom for the KML file
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17594 * @return an array of data objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17595 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17596 GeoTemConfig.loadKml = function(kml) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17597 var mapObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17598 var elements = kml.getElementsByTagName("Placemark");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17599 if (elements.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17600 return [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17601 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17602 var index = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17603 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17604 var placemark = elements[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17605 var name, description, place, granularity, lon, lat, tableContent = [], time = [], location = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17606 var weight = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17607 var timeData = false, mapData = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17608 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17609 name = placemark.getElementsByTagName("name")[0].childNodes[0].nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17610 tableContent["name"] = name;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17611 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17612 name = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17613 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17614
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17615 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17616 description = placemark.getElementsByTagName("description")[0].childNodes[0].nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17617 tableContent["description"] = description;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17618 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17619 description = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17620 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17621
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17622 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17623 place = placemark.getElementsByTagName("address")[0].childNodes[0].nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17624 tableContent["place"] = place;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17625 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17626 place = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17627 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17628
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17629 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17630 var coordinates = placemark.getElementsByTagName("Point")[0].getElementsByTagName("coordinates")[0].childNodes[0].nodeValue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17631 var lonlat = coordinates.split(",");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17632 lon = lonlat[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17633 lat = lonlat[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17634 if (lon == "" || lat == "" || isNaN(lon) || isNaN(lat)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17635 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17636 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17637 location.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17638 longitude : lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17639 latitude : lat,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17640 place : place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17641 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17642 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17643 if (!GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17644 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17645 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17646 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17647
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17648 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17649 var tuple = GeoTemConfig.getTimeData(placemark.getElementsByTagName("TimeStamp")[0].getElementsByTagName("when")[0].childNodes[0].nodeValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17650 if (tuple != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17651 time.push(tuple);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17652 timeData = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17653 } else if (!GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17654 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17655 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17656 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17657 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17658 throw "e";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17659 var timeSpanTag = placemark.getElementsByTagName("TimeSpan")[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17660 var tuple1 = GeoTemConfig.getTimeData(timeSpanTag.getElementsByTagName("begin")[0].childNodes[0].nodeValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17661 timeStart = tuple1.d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17662 granularity = tuple1.g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17663 var tuple2 = GeoTemConfig.getTimeData(timeSpanTag.getElementsByTagName("end")[0].childNodes[0].nodeValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17664 timeEnd = tuple2.d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17665 if (tuple2.g > granularity) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17666 granularity = tuple2.g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17667 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17668 timeData = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17669 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17670 if (!GeoTemConfig.incompleteData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17671 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17672 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17673 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17674 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17675 var object = new DataObject(name, description, location, time, 1, tableContent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17676 object.setIndex(index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17677 index++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17678 mapObjects.push(object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17679 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17680 return mapObjects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17681 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17682 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17683 * MapControl.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17684 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17685 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17686 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17687 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17688 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17689 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17690 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17691 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17692 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17693 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17694 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17695 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17696 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17697 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17698 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17699 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17700 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17701 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17702
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17703 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17704 * @class MapControl
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17705 * Generic map control interface
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17706 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17707 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17708 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17709 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17710 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17711 function MapControl(map, button, label, onActivate, onDeactivate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17712
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17713 var control = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17714 this.button = button;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17715 this.enabled = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17716 this.activated = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17717 this.label = label;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17719 if (this.button != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17720 $(this.button).addClass(label + 'Deactivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17721 $(this.button).attr("title", GeoTemConfig.getString(GeoTemConfig.language, label));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17722 //vhz
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17723 $(this.button).click(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17724 control.checkStatus();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17725 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17726 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17728 this.checkStatus = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17729 if (control.enabled) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17730 if ( typeof map.activeControl != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17731 if (control.activated) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17732 control.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17733 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17734 map.activeControl.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17735 control.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17736 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17737 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17738 control.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17739 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17740 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17741 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17742
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17743 this.setButtonClass = function(removeClass, addClass) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17744 if (this.button != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17745 $(this.button).removeClass(label + removeClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17746 $(this.button).addClass(label + addClass);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17747 $(this.button).attr("title", GeoTemConfig.getString(GeoTemConfig.language, label));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17748 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17749 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17750
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17751 this.disable = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17752 this.enabled = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17753 this.setButtonClass('Deactivated', 'Disabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17754 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17755
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17756 this.enable = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17757 this.enabled = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17758 this.setButtonClass('Disabled', 'Deactivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17759 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17760
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17761 this.activate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17762 onActivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17763 this.activated = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17764 this.setButtonClass('Deactivated', 'Activated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17765 map.activeControl = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17766 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17767
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17768 this.deactivate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17769 onDeactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17770 this.activated = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17771 this.setButtonClass('Activated', 'Deactivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17772 map.activeControl = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17773 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17774
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17775 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17776 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17777 * CircleObject.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17778 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17779 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17780 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17781 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17782 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17783 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17784 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17785 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17786 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17787 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17788 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17789 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17790 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17791 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17792 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17793 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17794 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17795 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17796
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17797 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17798 * @class CircleObject
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17799 * circle object aggregate for the map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17800 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17801 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17802 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17803 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17804 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17805 * @param {float} x the x (longitude) value for the circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17806 * @param {float} y the y (latitude) value for the circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17807 * @param {DataObject[]} elements array of data objects belonging to the circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17808 * @param {float} radius the resulting radius (in pixel) for the circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17809 * @param {int} search dataset index
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17810 * @param {int} weight summed weight of all elements
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17811 * @param {JSON} fatherBin bin of the circle object if its part of a circle pack
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17812 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17813 CircleObject = function(originX, originY, shiftX, shiftY, elements, radius, search, weight, fatherBin) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17814
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17815 this.originX = originX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17816 this.originY = originY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17817 this.shiftX = shiftX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17818 this.shiftY = shiftY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17819 this.elements = elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17820 this.radius = radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17821 this.search = search;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17822 this.weight = weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17823 this.overlay = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17824 this.smoothness = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17825 this.fatherBin = fatherBin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17827 this.feature
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17828 this.olFeature
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17829 this.percentage = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17830 this.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17831
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17832 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17833
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17834 CircleObject.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17835
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17836 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17837 * sets the OpenLayers point feature for this point object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17838 * @param {OpenLayers.Feature} pointFeature the point feature for this object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17839 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17840 setFeature : function(feature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17841 this.feature = feature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17842 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17843
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17844 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17845 * sets the OpenLayers point feature for this point object to manage its selection status
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17846 * @param {OpenLayers.Feature} olPointFeature the overlay point feature for this object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17847 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17848 setOlFeature : function(olFeature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17849 this.olFeature = olFeature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17850 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17851
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17852 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17853 this.overlay = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17854 this.smoothness = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17855 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17856
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17857 setSelection : function(s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17858 this.selected = s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17859 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17860
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17861 toggleSelection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17862 this.selected = !this.selected;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17864 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17865 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17866 * FilterBar.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17867 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17868 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17869 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17870 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17871 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17872 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17873 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17874 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17875 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17876 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17877 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17878 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17879 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17880 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17881 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17882 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17883 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17884 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17885
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17886 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17887 * @class FilterBar
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17888 * Implementation for FilterBar Object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17889 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17890 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17891 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17892 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17893 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17894 * @param {Object} parent parent to call filter functions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17895 * @param {HTML object} parentDiv div to append filter buttons
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17896 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17897 function FilterBar(parent, parentDiv) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17898
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17899 var bar = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17900
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17901 this.filter = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17902 this.filter.setAttribute('class', 'smallButton filterDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17903 this.filter.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17904 parent.filtering();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17905 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17906
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17907 this.filterInverse = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17908 this.filterInverse.setAttribute('class', 'smallButton filterInverseDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17909 this.filterInverse.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17910 parent.inverseFiltering();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17911 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17912 if (!GeoTemConfig.inverseFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17913 this.filterInverse.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17914 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17916 this.cancelSelection = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17917 this.cancelSelection.setAttribute('class', 'smallButton filterCancelDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17918 this.cancelSelection.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17919 parent.deselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17920 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17921
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17922 this.appendTo = function(parentDiv) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17923 parentDiv.appendChild(this.filter);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17924 parentDiv.appendChild(this.filterInverse);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17925 parentDiv.appendChild(this.cancelSelection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17926 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17927 if ( typeof parentDiv != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17928 this.appendTo(parentDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17929 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17930
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17931 this.reset = function(show) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17932 if (show) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17933 this.filter.setAttribute('class', 'smallButton filter');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17934 this.filterInverse.setAttribute('class', 'smallButton filterInverse');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17935 this.cancelSelection.setAttribute('class', 'smallButton filterCancel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17936 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17937 this.filter.setAttribute('class', 'smallButton filterDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17938 this.filterInverse.setAttribute('class', 'smallButton filterInverseDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17939 this.cancelSelection.setAttribute('class', 'smallButton filterCancelDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17940 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17941 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17942
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17943 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17944 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17945 * Selection.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17946 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17947 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17948 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17949 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17950 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17951 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17952 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17953 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17954 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17955 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17956 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17957 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17958 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17959 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17960 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17961 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17962 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17963 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17964
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17965 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17966 * @class Selection
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17967 * Selection Class
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17968 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17969 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17970 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17971 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17972 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17973 * @param {Array} objects array of selected objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17974 * @param {Object} widget which belongs to selection
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17975 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17976 function Selection(objects, widget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17977
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17978 this.objects = objects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17979 if ( typeof objects == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17980 this.objects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17981 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17982 this.objects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17983 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17984 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17985 this.widget = widget;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17986
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17987 this.getObjects = function(widget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17988 if (!this.equal(widget)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17989 return this.objects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17990 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17991 this.objects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17992 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17993 this.objects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17994 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17995 return this.objects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17996 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17997
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17998 this.equal = function(widget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
17999 if (this.valid() && this.widget != widget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18000 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18001 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18002 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18003 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18004
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18005 this.valid = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18006 if ( typeof this.widget != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18007 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18008 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18009 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18010 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18011
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18012 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18013
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18014 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18015 * PlacenameTags.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18016 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18017 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18018 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18019 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18020 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18021 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18022 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18023 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18024 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18025 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18026 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18027 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18028 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18029 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18030 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18031 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18032 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18033 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18034
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18035 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18036 * @class PlacenameTags
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18037 * place labels computation for circles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18038 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18039 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18040 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18041 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18042 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18043 function PlacenameTags(circle, map) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18044
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18045 this.circle = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18046 this.map = map;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18047
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18048 this.placeLabels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18049 this.selectedLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18050
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18051 this.allLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18052 this.othersLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18053 this.unknownLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18054
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18055 this.calculate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18056 this.calculateLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18057 this.calculatePlacenameTags();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18058 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18059
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18060 this.calculateLabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18061 var elements = this.circle.elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18062 var k = this.circle.search;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18063 var weight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18064 var labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18065 var levelOfDetail = this.map.getLevelOfDetail();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18066 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18067 weight += elements[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18068 var found = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18069 var label = elements[i].getPlace(this.map.options.mapIndex, levelOfDetail);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18070 if (label == "") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18071 label = "unknown";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18072 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18073 for (var j = 0; j < labels.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18074 if (labels[j].place == label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18075 labels[j].elements.push(elements[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18076 labels[j].weight += elements[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18077 found = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18078 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18079 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18080 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18081 if (!found) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18082 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18083 id : elements[i].name,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18084 place : label,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18085 elements : new Array(elements[i]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18086 weight : elements[i].weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18087 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18088 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18089 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18090 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18091 var sortBySize = function(label1, label2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18092 if (label1.weight > label2.weight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18093 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18094 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18095 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18096 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18097 labels.sort(sortBySize);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18098 if (map.options.maxPlaceLabels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18099 var ml = map.options.maxPlaceLabels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18100 if (ml == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18101 labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18102 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18103 place : "all",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18104 elements : elements,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18105 weight : weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18106 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18107 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18108 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18109 if (ml == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18110 ml++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18111 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18112 if (ml > 2 && labels.length + 1 > ml) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18113 var c = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18114 var w = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18115 for (var i = ml - 2; i < labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18116 c = c.concat(labels[i].elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18117 w += labels[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18118 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18119 labels = labels.slice(0, ml - 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18120 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18121 place : "others",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18122 elements : c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18123 weight : w,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18124 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18125 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18126 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18127 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18128 if (labels.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18129 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18130 place : "all",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18131 elements : elements,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18132 weight : weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18133 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18134 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18135 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18136 this.placeLabels = labels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18137 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18138
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18139 this.calculatePlacenameTags = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18140 var cloud = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18141
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18142 var c = GeoTemConfig.getColor(this.circle.search);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18143 var color0 = 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18144 var color1 = 'rgb(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18145 var allStyles = "", hoverStyle = "", highlightStyle = "", selectedStyle = "", unselectedStyle = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18146
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18147 if (GeoTemConfig.ie) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18148 highlightStyle += map.options.ieHighlightLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18149 hoverStyle += map.options.ieHoveredLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18150 selectedStyle += map.options.ieSelectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18151 unselectedStyle += map.options.ieUnselectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18152 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18153 highlightStyle += map.options.highlightLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18154 hoverStyle += map.options.hoveredLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18155 selectedStyle += map.options.selectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18156 unselectedStyle += map.options.unselectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18157 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18158
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18159 var clickFunction = function(label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18160 label.div.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18161 cloud.changeLabelSelection(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18162 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18163 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18164 var maxLabelSize = this.count
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18165 for (var i = 0; i < this.placeLabels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18166 var l = this.placeLabels[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18167 l.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18168 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18169 div.setAttribute('class', 'tagCloudItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18170 var fontSize = 1 + (l.weight - 1) / this.map.count * map.options.maxLabelIncrease;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18171 if (l.place == "all") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18172 fontSize = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18173 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18174 div.style.fontSize = fontSize + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18175 l.allStyle = allStyles + "font-size: " + fontSize + "em;";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18176 l.selectedStyle = selectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18177 l.unselectedStyle = unselectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18178 l.highlightStyle = highlightStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18179 l.hoverStyle = hoverStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18180 div.innerHTML = l.place + "<span style='font-size:" + (1 / fontSize) + "em'>&nbsp;(" + l.weight + ")</span>";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18181 l.div = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18182 clickFunction(l);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18184 if (map.options.labelGrid) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18185 this.showPlacelabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18186 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18187 for (var i = 0; i < this.placeLabels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18188 this.placeLabels[i].div.setAttribute('style', this.placeLabels[i].allStyle + "" + this.placeLabels[i].highlightStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18189 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18190 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18191 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18192
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18193 this.selectLabel = function(label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18194 if ( typeof label == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18195 label = this.placeLabels[this.placeLabels.length - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18196 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18197 if (this.map.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18198 this.map.popup.showLabelContent(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18199 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18200 this.selectedLabel = label;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18201 this.selectedLabel.div.setAttribute('style', this.selectedLabel.allStyle + "" + this.selectedLabel.selectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18202 this.map.mapLabelSelection(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18203 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18204
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18205 // changes selection between labels (click, hover)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18206 this.changeLabelSelection = function(label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18207 if (this.selectedLabel == label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18208 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18209 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18210 if ( typeof this.selectedLabel != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18211 this.selectedLabel.div.setAttribute('style', this.selectedLabel.allStyle + "" + this.selectedLabel.unselectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18212 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18213 this.selectLabel(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18214 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18215
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18216 this.showPlacelabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18217 this.leftDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18218 this.leftDiv.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18219 this.map.gui.mapWindow.appendChild(this.leftDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18220 this.rightDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18221 this.rightDiv.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18222 this.map.gui.mapWindow.appendChild(this.rightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18223 for (var i = 0; i < this.placeLabels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18224 if (i % 2 == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18225 this.leftDiv.appendChild(this.placeLabels[i].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18226 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18227 this.rightDiv.appendChild(this.placeLabels[i].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18228 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18229 this.placeLabels[i].div.setAttribute('style', this.placeLabels[i].allStyle + "" + this.placeLabels[i].highlightStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18230 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18231 this.placeTagCloud();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18232 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18233
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18234 this.placeTagCloud = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18235 var lonlat = new OpenLayers.LonLat(this.circle.feature.geometry.x, this.circle.feature.geometry.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18236 var pixel = map.openlayersMap.getPixelFromLonLat(lonlat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18237 var radius = this.circle.feature.style.pointRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18238 var lw = this.leftDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18239 var rw = this.rightDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18240 this.leftDiv.style.left = (pixel.x - radius - lw - 5) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18241 this.rightDiv.style.left = (pixel.x + radius + 5) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18242 var lh = this.leftDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18243 var rh = this.rightDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18244 var lt = pixel.y - lh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18245 var rt = pixel.y - rh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18246 this.leftDiv.style.top = lt + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18247 this.rightDiv.style.top = rt + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18248 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18249
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18250 this.remove = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18251 $(this.leftDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18252 $(this.rightDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18253 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18254
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18255 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18256
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18257 function PackPlacenameTags(circle, map) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18258
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18259 this.circle = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18260 this.map = map;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18261
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18262 this.placeLabels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18263 this.selectedLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18264
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18265 this.allLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18266 this.othersLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18267 this.unknownLabel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18268
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18269 this.calculate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18270 this.calculateLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18271 this.calculatePlacenameTags();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18272 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18273
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18274 this.getLabelList = function(circle) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18275
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18276 var elements = circle.elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18277 var k = circle.search;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18278 var weight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18279 var labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18280 var levelOfDetail = this.map.getLevelOfDetail();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18281 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18282 weight += elements[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18283 var found = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18284 var label = elements[i].getPlace(this.map.options.mapIndex, levelOfDetail);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18285 if (label == "") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18286 label = "unknown";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18287 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18288 for (var j = 0; j < labels.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18289 if (labels[j].place == label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18290 labels[j].elements.push(elements[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18291 labels[j].weight += elements[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18292 found = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18293 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18294 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18295 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18296 if (!found) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18297 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18298 id : elements[i].name,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18299 place : label,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18300 elements : new Array(elements[i]),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18301 weight : elements[i].weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18302 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18303 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18304 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18305 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18306 var sortBySize = function(label1, label2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18307 if (label1.weight > label2.weight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18308 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18309 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18310 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18312 labels.sort(sortBySize);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18313 var droppedLabels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18314 if (map.options.maxPlaceLabels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18315 var ml = map.options.maxPlaceLabels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18316 if (ml == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18317 labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18318 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18319 place : "all",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18320 elements : elements,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18321 weight : weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18322 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18323 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18324 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18325 if (ml == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18326 ml++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18327 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18328 if (ml > 2 && labels.length + 1 > ml) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18329 var c = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18330 var w = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18331 for (var i = ml - 2; i < labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18332 c = c.concat(labels[i].elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18333 w += labels[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18334 droppedLabels.push(labels[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18335 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18336 labels = labels.slice(0, ml - 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18337 var ol = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18338 place : "others",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18339 elements : c,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18340 weight : w,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18341 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18342 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18343 labels.push(ol);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18344 this.othersLabels.push(ol);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18345 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18346 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18347 if (labels.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18348 labels.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18349 place : "all",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18350 elements : elements,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18351 weight : weight,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18352 index : k
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18353 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18354 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18355 this.placeLabels.push(labels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18356 this.droppedLabels.push(droppedLabels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18357 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18358
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18359 this.calculateLabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18360 var circles = this.circle.circles;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18361 this.placeLabels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18362 this.droppedLabels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18363 this.othersLabels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18364 for (var i = 0; i < circles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18365 this.getLabelList(circles[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18366 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18367 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18369 this.calculatePlacenameTags = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18370 var cloud = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18371
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18372 var unselectedStyles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18373 var selectedStyles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18374 var hoverStyles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18375
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18376 for (var k = 0; k < this.placeLabels.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18377 var c = GeoTemConfig.getColor(this.circle.circles[k].search);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18378 var color0 = 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18379 var color1 = 'rgb(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18380 var allStyles = "", hoverStyle = "", highlightStyle = "", selectedStyle = "", unselectedStyle = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18381
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18382 if (GeoTemConfig.ie) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18383 highlightStyle += map.options.ieHighlightLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18384 hoverStyle += map.options.ieHoveredLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18385 selectedStyle += map.options.ieSelectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18386 unselectedStyle += map.options.ieUnselectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18387 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18388 highlightStyle += map.options.highlightLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18389 hoverStyle += map.options.hoveredLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18390 selectedStyle += map.options.selectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18391 unselectedStyle += map.options.unselectedLabel.replace(/COLOR1/g, color1).replace(/COLOR0/g, color0) + ";";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18392 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18393
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18394 allStyles += 'margin-right:5px;';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18395 allStyles += 'margin-left:5px;';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18396 unselectedStyles.push(unselectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18397 selectedStyles.push(selectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18398 hoverStyles.push(hoverStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18399
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18400 var clickFunction = function(label, id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18401 label.div.onmouseover = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18402 if (!label.opposite) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18403 var oppositeLabel, oppositeLabelDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18404 label.div.setAttribute('style', allStyles + "" + selectedStyles[id]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18405 var c = GeoTemConfig.getColor(id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18406 var color0 = 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18407 if (id == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18408 for (var i = 0; i < cloud.droppedLabels[1].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18409 if (cloud.droppedLabels[1][i].place == label.place) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18410 oppositeLabel = cloud.droppedLabels[1][i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18411 cloud.rightDiv.appendChild(oppositeLabel.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18412 cloud.drawLine(cloud.ctxOl, label.div, oppositeLabel.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18413 var olDiv = cloud.othersLabels[1].div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18414 olDiv.innerHTML = olDiv.innerHTML.replace(/\(\d*\)/g, '(' + (cloud.othersLabels[1].weight - oppositeLabel.weight) + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18415 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18416 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18417 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18418 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18419 for (var i = 0; i < cloud.droppedLabels[0].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18420 if (cloud.droppedLabels[0][i].place == label.place) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18421 oppositeLabel = cloud.droppedLabels[0][i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18422 cloud.leftDiv.appendChild(oppositeLabel.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18423 cloud.drawLine(cloud.ctxOl, oppositeLabel.div, label.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18424 var olDiv = cloud.othersLabels[0].div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18425 olDiv.innerHTML = olDiv.innerHTML.replace(/\(\d*\)/g, '(' + (cloud.othersLabels[0].weight - oppositeLabel.weight) + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18426 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18429 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18430 if ( typeof oppositeLabel == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18431 oppositeLabel = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18432 div : cloud.naDiv
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18433 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18434 if (id == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18435 cloud.rightDiv.appendChild(cloud.naDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18436 cloud.drawLine(cloud.ctxOl, label.div, cloud.naDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18437 oppositeLabel.div.setAttribute('style', allStyles + "" + selectedStyles[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18438 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18439 cloud.leftDiv.appendChild(cloud.naDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18440 cloud.drawLine(cloud.ctxOl, cloud.naDiv, label.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18441 oppositeLabel.div.setAttribute('style', allStyles + "" + selectedStyles[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18442 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18443 cloud.map.mapLabelHighlight(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18444 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18445 cloud.map.mapLabelHighlight([label, oppositeLabel]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18446 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18447 label.div.onmouseout = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18448 label.div.setAttribute('style', allStyles + "" + unselectedStyles[id]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18449 var olDiv = cloud.othersLabels[0].div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18450 olDiv.innerHTML = olDiv.innerHTML.replace(/\(\d*\)/g, '(' + cloud.othersLabels[0].weight + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18451 var olDiv2 = cloud.othersLabels[1].div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18452 olDiv2.innerHTML = olDiv2.innerHTML.replace(/\(\d*\)/g, '(' + cloud.othersLabels[1].weight + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18453 $(oppositeLabel.div).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18454 cloud.ctxOl.clearRect(0, 0, cloud.cvOl.width, cloud.cvOl.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18455 cloud.map.mapLabelHighlight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18456 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18458 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18459 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18460 var maxLabelSize = this.count
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18461 for (var i = 0; i < this.placeLabels[k].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18462 var l = this.placeLabels[k][i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18463 l.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18464 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18465 div.setAttribute('class', 'tagCloudItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18466 var fontSize = 1 + (l.weight - 1) / this.map.count * map.options.maxLabelIncrease;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18467 if (l.place == "all") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18468 fontSize = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18469 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18470 div.style.fontSize = fontSize + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18471 l.allStyle = allStyles + "font-size: " + fontSize + "em;";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18472 l.selectedStyle = selectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18473 l.unselectedStyle = unselectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18474 l.hoverStyle = hoverStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18475 div.innerHTML = l.place + "<span style='font-size:" + (1 / fontSize) + "em'>&nbsp;(" + l.weight + ")</span>";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18476 l.div = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18477 clickFunction(l, k);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18478 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18479 for (var i = 0; i < this.droppedLabels[k].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18480 var l = this.droppedLabels[k][i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18481 l.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18482 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18483 div.setAttribute('class', 'tagCloudItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18484 var fontSize = 1 + (l.weight - 1) / this.map.count * map.options.maxLabelIncrease;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18485 div.style.fontSize = fontSize + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18486 l.allStyle = allStyles + "font-size: " + fontSize + "em;";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18487 l.selectedStyle = selectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18488 l.unselectedStyle = unselectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18489 l.hoverStyle = hoverStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18490 div.innerHTML = l.place + "<span style='font-size:" + (1 / fontSize) + "em'>&nbsp;(" + l.weight + ")</span>";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18491 l.div = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18492 div.setAttribute('style', allStyles + "" + selectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18493 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18494 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18495
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18496 this.naDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18497 this.naDiv.setAttribute('class', 'tagCloudItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18498 var fontSize = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18499 div.style.fontSize = fontSize + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18500 l.allStyle = allStyles + "font-size: " + fontSize + "em;";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18501 l.selectedStyle = selectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18502 l.unselectedStyle = unselectedStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18503 l.hoverStyle = hoverStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18504 this.naDiv.innerHTML = "Not available";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18505 l.div = this.naDiv;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18507 if (map.options.labelGrid) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18508 this.showPlacelabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18509 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18510 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18511
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18512 this.showPlacelabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18513 this.leftDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18514 this.leftDiv.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18515 this.leftDiv.style.textAlign = 'right';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18516 this.map.gui.mapWindow.appendChild(this.leftDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18517 this.centerDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18518 this.centerDiv.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18519 this.centerDiv.style.opacity = 0.7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18520 this.map.gui.mapWindow.appendChild(this.centerDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18521 this.centerDivOl = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18522 this.centerDivOl.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18523 this.centerDivOl.style.opacity = 0.7;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18524 this.map.gui.mapWindow.appendChild(this.centerDivOl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18525 this.rightDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18526 this.rightDiv.setAttribute('class', 'tagCloudDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18527 this.rightDiv.style.textAlign = 'left';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18528 this.map.gui.mapWindow.appendChild(this.rightDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18529 for (var i = 0; i < this.placeLabels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18530 for (var j = 0; j < this.placeLabels[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18531 if (i == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18532 this.leftDiv.appendChild(this.placeLabels[i][j].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18533 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18534 this.rightDiv.appendChild(this.placeLabels[i][j].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18536 this.placeLabels[i][j].div.setAttribute('style', this.placeLabels[i][j].allStyle + "" + this.placeLabels[i][j].unselectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18538 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18539 this.placeTagCloud();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18540 this.setCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18541 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18542
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18543 this.placeTagCloud = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18544 var lonlat = new OpenLayers.LonLat(this.circle.feature.geometry.x, this.circle.feature.geometry.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18545 var pixel = map.openlayersMap.getPixelFromLonLat(lonlat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18546 var radius = this.circle.feature.style.pointRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18547 var lw = this.leftDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18548 var rw = this.rightDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18549 this.leftDiv.style.left = (pixel.x - radius - lw - 5) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18550 this.rightDiv.style.left = (pixel.x + radius + 5) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18551 var lh = this.leftDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18552 var rh = this.rightDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18553 var lt = pixel.y - lh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18554 var rt = pixel.y - rh / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18555 this.leftDiv.style.top = lt + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18556 this.rightDiv.style.top = rt + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18557 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18558
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18559 this.setCanvas = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18560 var height = Math.max(this.leftDiv.offsetHeight, this.rightDiv.offsetHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18561 var top = Math.min(this.leftDiv.offsetTop, this.rightDiv.offsetTop);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18562 var left = this.leftDiv.offsetLeft + this.leftDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18563 this.width = this.rightDiv.offsetLeft - left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18564 this.centerDiv.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18565 this.centerDiv.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18566 this.centerDiv.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18567 this.centerDiv.style.width = this.width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18568
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18569 this.centerDivOl.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18570 this.centerDivOl.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18571 this.centerDivOl.style.height = height + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18572 this.centerDivOl.style.width = this.width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18573
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18574 var cv = document.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18575 this.centerDiv.appendChild(cv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18576 if (!cv.getContext && G_vmlCanvasManager) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18577 cv = G_vmlCanvasManager.initElement(cv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18579 cv.width = this.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18580 cv.height = height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18581 ctx = cv.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18582
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18583 this.cvOl = document.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18584 this.centerDivOl.appendChild(this.cvOl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18585 if (!this.cvOl.getContext && G_vmlCanvasManager) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18586 this.cvOl = G_vmlCanvasManager.initElement(this.cvOl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18587 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18588 this.cvOl.width = this.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18589 this.cvOl.height = height + 50;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18590 this.ctxOl = this.cvOl.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18591
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18592 for (var i = 0; i < this.placeLabels[0].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18593 this.placeLabels[0][i].opposite = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18594 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18595 for (var i = 0; i < this.placeLabels[1].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18596 this.placeLabels[1][i].opposite = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18597 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18598 for (var i = 0; i < this.placeLabels[0].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18599 for (var j = 0; j < this.placeLabels[1].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18600 if (this.placeLabels[0][i].place == this.placeLabels[1][j].place) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18601 this.drawLine(ctx, this.placeLabels[0][i].div, this.placeLabels[1][j].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18602 this.placeLabels[0][i].opposite = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18603 this.placeLabels[1][j].opposite = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18604 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18605 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18606 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18607 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18608
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18609 this.drawLine = function(ctx, label1, label2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18610 var x1 = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18611 var x2 = this.width - 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18612 var y1 = label1.offsetTop + label1.offsetHeight / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18613 var y2 = label2.offsetTop + label2.offsetHeight / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18614 if (this.leftDiv.offsetTop > this.rightDiv.offsetTop) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18615 y1 += this.leftDiv.offsetTop - this.rightDiv.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18616 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18617 y2 += this.rightDiv.offsetTop - this.leftDiv.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18618 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18619 ctx.lineCap = 'round';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18620 ctx.lineWidth = 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18621 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18622 ctx.moveTo(x1, y1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18623 ctx.lineTo(x2, y2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18624 ctx.strokeStyle = '#555';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18625 ctx.stroke();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18626 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18627
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18628 this.remove = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18629 $(this.leftDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18630 $(this.rightDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18631 $(this.centerDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18632 $(this.centerDivOl).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18633 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18635 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18636 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18637 * MapConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18638 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18639 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18640 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18641 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18642 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18643 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18644 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18645 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18646 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18647 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18648 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18649 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18650 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18651 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18652 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18653 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18654 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18655 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18656
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18657 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18658 * @class MapConfig
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18659 * Map Configuration File
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18660 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18661 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18662 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18663 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18664 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18665 function MapConfig(options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18666
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18667 this.options = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18668 mapWidth : false, // false or desired width css definition for the map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18669 mapHeight : '580px', // false or desired height css definition for the map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18670 mapTitle : 'GeoTemCo Map View', // title will be shown in map header
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18671 mapIndex : 0, // index = position in location array; for multiple locations the 2nd map refers to index 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18672 alternativeMap : false, // alternative map definition for a web mapping service or 'false' for no alternative map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18673 /* an example:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18674 {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18675 name: 'someMapName',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18676 url: '/geoserver/wms',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18677 layer: 'namespace:layerName'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18678 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18679 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18680 googleMaps : false, // enable/disable Google maps (actually, no Google Maps API key is required)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18681 bingMaps : false, // enable/disable Bing maps (you need to set the Bing Maps API key below)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18682 bingApiKey : 'none', // bing maps api key, see informations at http://bingmapsportal.com/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18683 osmMaps : true, // enable/disable OSM maps
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18684 baseLayer : 'Open Street Map', // initial layer to show (e.g. 'Google Streets')
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18685 resetMap : true, // show/hide map reset button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18686 countrySelect : true, // show/hide map country selection control button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18687 polygonSelect : true, // show/hide map polygon selection control button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18688 circleSelect : true, // show/hide map circle selection control button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18689 squareSelect : true, // show/hide map square selection control button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18690 multiSelection : true, // true, if multiple polygons or multiple circles should be selectable
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18691 popups : true, // enabled popups will show popup windows for circles on the map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18692 olNavigation : false, // show/hide OpenLayers navigation panel
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18693 olLayerSwitcher : false, // show/hide OpenLayers layer switcher
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18694 olMapOverview : false, // show/hide OpenLayers map overview
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18695 olKeyboardDefaults : true, // (de)activate Openlayers keyboard defaults
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18696 olScaleLine : false, // (de)activate Openlayers keyboard defaults
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18697 geoLocation : true, // show/hide GeoLocation feature
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18698 boundaries : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18699 minLon : -29,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18700 minLat : 35,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18701 maxLon : 44,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18702 maxLat : 67
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18703 }, // initial map boundaries or 'false' for no boundaries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18704 mapCanvasFrom : '#9db9d8', // map widget background gradient color top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18705 mapCanvasTo : '#5783b5', // map widget background gradient color bottom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18706 labelGrid : true, // show label grid on hover
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18707 maxPlaceLabels : 6, // Integer value for fixed number of place labels: 0 --> unlimited, 1 --> 1 label (won't be shown in popup, 2 --> is not possible because of others & all labels --> 3 labels, [3,...,N] --> [3,...,N] place labels)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18708 selectDefault : true, // true, if strongest label should be selected as default
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18709 maxLabelIncrease : 2, // maximum increase (in em) for the font size of a label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18710 labelHover : false, // true, to update on label hover
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18711 ieHighlightLabel : "color: COLOR1; background-color: COLOR0; filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';", // css code for a highlighted place label in IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18712 highlightLabel : "color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR0;", // css code for a highlighted place label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18713 ieSelectedLabel : "color: COLOR1; font-weight: bold;", // css code for a selected place label in IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18714 selectedLabel : "color: COLOR1; font-weight: bold;", // css code for a selected place label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18715 ieUnselectedLabel : "color: COLOR1; font-weight: normal;", // css code for an unselected place label in IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18716 unselectedLabel : "color: COLOR1; font-weight: normal;", // css code for an unselected place label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18717 ieHoveredLabel : "color: COLOR1; font-weight: bold;", // css code for a hovered place label in IE
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18718 hoveredLabel : "color: COLOR1; font-weight: bold;", // css code for a hovered place label
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18719 circleGap : 0, // gap between the circles on the map (>=0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18720 minimumRadius : 4, // minimum radius of a circle with mimimal weight (>0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18721 circleOutline : true, // true if circles should have a default outline
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18722 circleTransparency : true, // transparency of the circles
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18723 minTransparency : 0.4, // maximum transparency of a circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18724 maxTransparency : 0.8, // minimum transparency of a circle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18725 binning : 'generic', // binning algorithm for the map, possible values are: 'generic', 'square', 'hexagonal', 'triangular' or false for 'no binning'
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18726 noBinningRadii : 'dynamic', // for 'no binning': 'static' for only minimum radii, 'dynamic' for increasing radii for increasing weights
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18727 circlePackings : true, // if circles of multiple result sets should be displayed in circle packs, if a binning is performed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18728 binCount : 10, // number of bins for x and y dimension for lowest zoom level
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18729 showDescriptions : true, // true to show descriptions of data items (must be provided by kml/json), false if not
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18730 mapSelection : true, // show/hide select map dropdown
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18731 binningSelection : false, // show/hide binning algorithms dropdown
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18732 mapSelectionTools : true, // show/hide map selector tools
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18733 dataInformation : true, // show/hide data information
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18734 overlayVisibility : false, // initial visibility of additional overlays
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18735 proxyHost : '' //required for selectCountry feature, if the requested GeoServer and GeoTemCo are NOT on the same server
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18736
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18737 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18738 if ( typeof options != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18739 $.extend(this.options, options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18740 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18741
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18742 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18743 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18744 * MapGui.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18745 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18746 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18747 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18748 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18749 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18750 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18751 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18752 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18753 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18754 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18755 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18756 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18757 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18758 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18759 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18760 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18761 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18762 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18763
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18764 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18765 * @class MapGui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18766 * Map GUI Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18767 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18768 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18769 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18770 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18771 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18772 * @param {MapWidget} parent map widget object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18773 * @param {HTML object} div parent div to append the map gui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18774 * @param {JSON} options map configuration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18775 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18776 function MapGui(map, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18777
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18778 this.map = map;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18780 this.container = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18781 if (options.mapWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18782 this.container.style.width = options.mapWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18783 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18784 if (options.mapHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18785 this.container.style.height = options.mapHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18786 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18787 this.container.style.position = 'relative';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18788
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18789 this.mapWindow = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18790 this.mapWindow.id = "mapWindow";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18791 this.container.appendChild(this.mapWindow);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18792
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18793 this.mapContainer = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18794 this.mapContainer.id = "mapContainer";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18795 this.mapContainer.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18796 this.mapContainer.style.zIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18797 this.mapWindow.appendChild(this.mapContainer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18798
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18799 var toolbarTable = document.createElement("table");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18800 toolbarTable.setAttribute('class', 'absoluteToolbar ddbToolbar');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18801 this.container.appendChild(toolbarTable);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18802 this.mapToolbar = toolbarTable;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18803
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18804 var titles = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18805 toolbarTable.appendChild(titles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18806 var tools = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18807 toolbarTable.appendChild(tools);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18808
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18809 if (options.mapSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18810 this.mapTypeTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18811 titles.appendChild(this.mapTypeTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18812 this.mapTypeTitle.innerHTML = GeoTemConfig.getString('mapType');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18813 this.mapTypeSelector = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18814 tools.appendChild(this.mapTypeSelector);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18815 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18816
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18817 if (options.mapSelectionTools) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18818 this.mapSelectorTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18819 titles.appendChild(this.mapSelectorTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18820 this.mapSelectorTitle.innerHTML = GeoTemConfig.getString('mapSelectorTools');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18821 var mapSelectorTools = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18822 var selectorTools = this.map.initSelectorTools();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18823 for (var i in selectorTools ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18824 mapSelectorTools.appendChild(selectorTools[i].button);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18825 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18826 tools.appendChild(mapSelectorTools);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18827 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18828
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18829 if (options.binningSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18830 this.binningTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18831 titles.appendChild(this.binningTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18832 this.binningTitle.innerHTML = GeoTemConfig.getString('binningType');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18833 this.binningSelector = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18834 tools.appendChild(this.binningSelector);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18835 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18836
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18837 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18838 this.filterTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18839 titles.appendChild(this.filterTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18840 this.filterTitle.innerHTML = GeoTemConfig.getString('filter');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18841 this.filterOptions = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18842 tools.appendChild(this.filterOptions);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18843 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18844
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18845 if (options.dataInformation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18846 this.infoTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18847 this.infoTitle.innerHTML = options.mapTitle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18848 titles.appendChild(this.infoTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18849 var mapSum = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18850 this.mapElements = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18851 this.mapElements.setAttribute('class', 'ddbElementsCount');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18852 mapSum.appendChild(this.mapElements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18853 tools.appendChild(mapSum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18854 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18855
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18856 var gui = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18857 if (navigator.geolocation && options.geoLocation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18858 this.geoActive = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18859 this.geoLocation = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18860 this.geoLocation.setAttribute('class', 'geoLocationOff');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18861 this.geoLocation.title = GeoTemConfig.getString('activateGeoLocation');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18862 this.container.appendChild(this.geoLocation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18863 this.geoLocation.style.left = "20px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18864 this.geoLocation.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18865 var changeStyle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18866 if (gui.geoActive) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18867 gui.geoLocation.setAttribute('class', 'geoLocationOn');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18868 gui.geoLocation.title = GeoTemConfig.getString(GeoTemConfig.language, 'deactivateGeoLocation');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18869 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18870 gui.geoLocation.setAttribute('class', 'geoLocationOff');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18871 gui.geoLocation.title = GeoTemConfig.getString(GeoTemConfig.language, 'activateGeoLocation');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18872 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18873 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18874 if (!gui.geoActive) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18875 if ( typeof gui.longitude == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18876 navigator.geolocation.getCurrentPosition(function(position) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18877 gui.longitude = position.coords.longitude;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18878 gui.latitude = position.coords.latitude;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18879 gui.map.setMarker(gui.longitude, gui.latitude);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18880 gui.geoActive = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18881 changeStyle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18882 }, function(msg) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18883 console.log( typeof msg == 'string' ? msg : "error");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18884 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18885 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18886 gui.map.setMarker(gui.longitude, gui.latitude);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18887 gui.geoActive = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18888 changeStyle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18889 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18890 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18891 gui.map.removeMarker();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18892 gui.geoActive = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18893 changeStyle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18894 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18895 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18896 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18897
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18898 if (!options.olNavigation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18899 this.map.zoomSlider = new MapZoomSlider(this.map, "vertical");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18900 this.container.appendChild(this.map.zoomSlider.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18901 this.map.zoomSlider.div.style.left = "20px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18902 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18904 if (options.resetMap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18905 this.homeButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18906 this.homeButton.setAttribute('class', 'mapHome');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18907 this.homeButton.title = GeoTemConfig.getString('home');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18908 this.container.appendChild(this.homeButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18909 this.homeButton.style.left = "20px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18910 this.homeButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18911 gui.map.drawObjectLayer(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18912 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18913 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18914
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18915 // var tooltip = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18916 // tooltip.setAttribute('class','ddbTooltip');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18917 // toolbarTable.appendChild(tooltip);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18918
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18919 // var tooltip = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18920 // tooltip.setAttribute('class','ddbTooltip');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18921 // toolbarTable.appendChild(tooltip);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18922 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18923 // tooltip.onmouseover = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18924 // /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18925 // Publisher.Publish('TooltipContent', {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18926 // content: GeoTemConfig.getString(GeoTemConfig.language,'timeHelp'),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18927 // target: $(tooltip)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18928 // });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18929 // */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18930 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18931 // tooltip.onmouseout = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18932 // // Publisher.Publish('TooltipContent');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18933 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18934 // //vhz tooltip on click should open a help file if defined in GeoTemConfig
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18935 // if(GeoTemConfig.helpURL) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18936 // tooltip.onclick = function () {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18937 //
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18938 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18939 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18940
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18941 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18942 // tooltip.onmouseout = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18943 // Publisher.Publish('TooltipContent');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18944 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18945
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18946 this.resize = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18947 var w = this.container.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18948 var h = this.container.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18949 // this.mapWindow.style.width = w + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18950 this.mapWindow.style.height = h + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18951 // this.mapContainer.style.width = w + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18952 this.mapContainer.style.height = h + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18953 var top = toolbarTable.offsetHeight + 20;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18954 if (options.olLayerSwitcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18955 var switcherDiv = $('.olControlLayerSwitcher')[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18956 $(switcherDiv).css('top', top + "px");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18957 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18958 if ( typeof this.geoLocation != "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18959 this.geoLocation.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18960 top += this.geoLocation.offsetHeight + 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18961 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18962 if (options.olNavigation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18963 var panZoomBar = $('.olControlPanZoom')[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18964 $(panZoomBar).css('top', top + 'px');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18965 $(panZoomBar).css('left', '12px');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18966 var zoomOut = document.getElementById('OpenLayers.Control.PanZoom_23_zoomout');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18967 top += $(zoomOut).height() + $(zoomOut).position().top + 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18968 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18969 this.map.zoomSlider.div.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18970 top += this.map.zoomSlider.div.offsetHeight + 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18971 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18972 if (options.resetMap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18973 this.homeButton.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18974 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18975 this.headerHeight = toolbarTable.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18976 this.headerWidth = toolbarTable.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18977 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18978
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18979 this.updateSpaceQuantity = function(count) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18980 if (!options.dataInformation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18981 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18982 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18983 this.mapCount = count;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18984 if (count != 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18985 this.mapElements.innerHTML = this.beautifyCount(count) + " " + GeoTemConfig.getString('results');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18986 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18987 this.mapElements.innerHTML = this.beautifyCount(count) + " " + GeoTemConfig.getString('result');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18988 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18989 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18990
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18991 this.setMapsDropdown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18992 if (!options.mapSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18993 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18994 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18995 $(this.mapTypeSelector).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18996 var maps = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18997 var gui = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18998 var addMap = function(name, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
18999 var setMap = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19000 gui.map.setMap(index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19001 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19002 maps.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19003 name : name,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19004 onclick : setMap
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19005 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19006 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19007 for (var i = 0; i < this.map.baseLayers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19008 addMap(this.map.baseLayers[i].name, i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19009 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19010 this.mapTypeDropdown = new Dropdown(this.mapTypeSelector, maps, GeoTemConfig.getString('selectMapType'));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19011 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19012
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19013 this.setMap = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19014 if (options.mapSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19015 this.mapTypeDropdown.setEntry(this.map.baselayerIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19016 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19017 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19018
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19019 this.setBinningDropdown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19020 if (!options.binningSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19021 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19022 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19023 $(this.binningSelector).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19024 var binnings = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19025 var gui = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19026 var index = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19027 var entry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19028 var addBinning = function(name, id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19029 if (options.binning == id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19030 entry = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19031 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19032 index++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19033 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19034 var setBinning = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19035 options.binning = id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19036 gui.map.initWidget(gui.map.datasets, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19037 gui.map.riseLayer();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19038 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19039 binnings.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19040 name : name,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19041 onclick : setBinning
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19042 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19043 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19044 addBinning(GeoTemConfig.getString('genericBinning'), 'generic');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19045 addBinning(GeoTemConfig.getString('squareBinning'), 'square');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19046 addBinning(GeoTemConfig.getString('hexagonalBinning'), 'hexagonal');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19047 addBinning(GeoTemConfig.getString('triangularBinning'), 'triangular');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19048 addBinning(GeoTemConfig.getString('noBinning'), false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19049 var binningDropdown = new Dropdown(this.binningSelector, binnings, GeoTemConfig.getString('binningTooltip'));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19050 binningDropdown.setEntry(entry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19051 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19052 this.setBinningDropdown();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19053
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19054 this.beautifyCount = function(count) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19055 var c = count + '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19056 var p = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19057 var l = c.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19058 while (l - p > 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19059 p += 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19060 c = c.substring(0, l - p) + "." + c.substring(l - p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19061 p++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19062 l++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19063 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19064 return c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19065 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19066
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19067 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19068 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19069 * MapWidget.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19070 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19071 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19072 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19073 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19074 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19075 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19076 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19077 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19078 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19079 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19080 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19081 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19082 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19083 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19084 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19085 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19086 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19087 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19088
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19089 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19090 * @class MapWidget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19091 * MapWidget Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19092 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19093 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19094 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19095 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19096 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19097 * @param {MapWrapper} core wrapper for interaction to other widgets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19098 * @param {HTML object} div parent div to append the map widget div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19099 * @param {JSON} options user specified configuration that overwrites options in MapConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19100 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19101 function MapWidget(core, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19102
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19103 this.core = core;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19104 this.core.setWidget(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19105 this.openlayersMap
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19106 this.baseLayers
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19107 this.objectLayer
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19108
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19109 this.drawPolygon
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19110 this.drawCircle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19111 this.selectCountry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19112 this.dragArea
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19113 this.selectFeature
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19114 this.navigation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19115
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19116 this.div = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19117
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19118 this.options = (new MapConfig(options)).options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19119 this.formerCP = this.options.circlePackings;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19120 this.gui = new MapGui(this, this.div, this.options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19122 this.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19123
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19124 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19125
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19126 MapWidget.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19127
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19128 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19129 * initializes the map for the Spatio Temporal Interface.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19130 * it includes setting up all layers of the map and defines all map specific interaction possibilities
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19131 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19132 initialize : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19133
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19134 var map = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19135
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19136 //OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19137 if (map.options.proxyHost) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19138 OpenLayers.ProxyHost = map.options.proxyHost;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19139 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19140
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19141 this.polygons = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19142 this.connections = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19143 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19144 this.wmsOverlays = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19145
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19146 this.layerZIndex = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19147 this.zIndices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19148
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19149 var activateDrag = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19150 map.dragArea.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19151 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19152 var deactivateDrag = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19153 map.dragArea.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19154 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19155 this.dragControl = new MapControl(this, null, 'drag', activateDrag, deactivateDrag);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19156
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19157 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19158 this.editPolygon = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19159 this.editPolygon.title = GeoTemConfig.getString('editPolygon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19160 this.editPolygon.setAttribute('class','editMapPolygon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19161 this.toolbar.appendChild(this.editPolygon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19162 this.drag.onclick = function(evt){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19163 if( map.activeControl == "drag" ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19164 map.deactivate("drag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19165 if( GeoTemConfig.navigate ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19166 map.activate("navigate");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19167 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19168 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19169 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19170 map.deactivate(map.activControl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19171 map.activate("drag");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19172 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19173 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19174 map.addEditingMode(new OpenLayers.Control.EditingMode.PointArraySnapping());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19175 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19176
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19177 var linkForOsm = 'http://www.openstreetmap.org/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19178 var linkForLicense = 'http://creativecommons.org/licenses/by-sa/2.0/';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19179 this.osmLink = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19180 this.osmLink.setAttribute('class', 'osmLink');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19181 this.osmLink.innerHTML = '(c) <a href=' + linkForOsm + '>OpenStreetMap contributors</a>, <a href=' + linkForLicense + '>CC-BY-SA</a>';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19182 this.gui.mapWindow.appendChild(this.osmLink);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19183
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19184 this.filterBar = new FilterBar(this, this.gui.filterOptions);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19185
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19186 this.objectLayer = new OpenLayers.Layer.Vector("Data Objects", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19187 projection : "EPSG:4326",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19188 'displayInLayerSwitcher' : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19189 rendererOptions : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19190 zIndexing : true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19191 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19192 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19193
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19194 this.markerLayer = new OpenLayers.Layer.Markers("Markers");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19195
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19196 this.navigation = new OpenLayers.Control.Navigation({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19197 zoomWheelEnabled : GeoTemConfig.mouseWheelZoom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19198 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19199 this.navigation.defaultDblClick = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19200 var newCenter = this.map.getLonLatFromViewPortPx(evt.xy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19201 this.map.setCenter(newCenter, this.map.zoom + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19202 map.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19203 if (map.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19204 map.zoomSlider.setValue(map.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19205 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19206 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19207 this.navigation.wheelUp = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19208 this.wheelChange(evt, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19209 map.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19210 if (map.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19211 map.zoomSlider.setValue(map.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19212 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19213 map.core.triggerHighlight([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19214 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19215 this.navigation.wheelDown = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19216 this.wheelChange(evt, -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19217 map.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19218 if (map.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19219 map.zoomSlider.setValue(map.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19220 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19221 map.core.triggerHighlight([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19222 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19223
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19224 this.resolutions = [78271.516953125, 39135.7584765625, 19567.87923828125, 9783.939619140625, 4891.9698095703125, 2445.9849047851562, 1222.9924523925781, 611.4962261962891, 305.74811309814453, 152.87405654907226, 76.43702827453613, 38.218514137268066, 19.109257068634033, 9.554628534317017, 4.777314267158508, 2.388657133579254, 1.194328566789627, 0.5971642833948135, 0.29858214169740677];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19225
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19226 var options = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19227 controls : [this.navigation],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19228 projection : new OpenLayers.Projection("EPSG:900913"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19229 displayProjection : new OpenLayers.Projection("EPSG:4326"),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19230 resolutions : this.resolutions,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19231 units : 'meters',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19232 maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19233 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19234 this.openlayersMap = new OpenLayers.Map("mapContainer", options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19235 if (map.options.navigate) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19236 this.activeControl = "navigate";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19237 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19238 this.mds = new MapDataSource(this.openlayersMap, this.options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19239
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19240 if (map.options.olNavigation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19241 var zoomPanel = new OpenLayers.Control.PanZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19242 zoomPanel.onButtonClick = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19243 var btn = evt.buttonElement;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19244 switch (btn.action) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19245 case "panup":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19246 this.map.pan(0, -this.getSlideFactor("h"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19247 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19248 case "pandown":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19249 this.map.pan(0, this.getSlideFactor("h"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19250 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19251 case "panleft":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19252 this.map.pan(-this.getSlideFactor("w"), 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19253 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19254 case "panright":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19255 this.map.pan(this.getSlideFactor("w"), 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19256 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19257 case "zoomin":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19258 map.zoom(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19259 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19260 case "zoomout":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19261 map.zoom(-1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19262 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19263 case "zoomworld":
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19264 if (this.map) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19265 map.zoom(this.map.zoom * -1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19267 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19268 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19269 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19270 this.openlayersMap.addControl(zoomPanel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19271 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19272
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19273 if (map.options.popups) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19274 var panMap = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19275 if (map.selectedGlyph) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19276 var lonlat = new OpenLayers.LonLat(map.selectedGlyph.lon, map.selectedGlyph.lat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19277 var pixel = map.openlayersMap.getPixelFromLonLat(lonlat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19278 if (map.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19279 map.popup.shift(pixel.x, pixel.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19280 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19281 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19282 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19283 this.openlayersMap.events.register("move", this.openlayersMap, panMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19284 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19285
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19286 if (map.options.olMapOverview) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19287 this.openlayersMap.addControl(new OpenLayers.Control.OverviewMap());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19288 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19289 if (map.options.olKeyboardDefaults) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19290 var keyboardControl = new OpenLayers.Control.KeyboardDefaults();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19291 keyboardControl.defaultKeyPress = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19292 switch(evt.keyCode) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19293 case OpenLayers.Event.KEY_LEFT:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19294 this.map.pan(-this.slideFactor, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19295 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19296 case OpenLayers.Event.KEY_RIGHT:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19297 this.map.pan(this.slideFactor, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19298 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19299 case OpenLayers.Event.KEY_UP:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19300 this.map.pan(0, -this.slideFactor);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19301 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19302 case OpenLayers.Event.KEY_DOWN:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19303 this.map.pan(0, this.slideFactor);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19304 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19305
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19306 case 33:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19307 // Page Up. Same in all browsers.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19308 var size = this.map.getSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19309 this.map.pan(0, -0.75 * size.h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19310 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19311 case 34:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19312 // Page Down. Same in all browsers.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19313 var size = this.map.getSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19314 this.map.pan(0, 0.75 * size.h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19315 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19316 case 35:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19317 // End. Same in all browsers.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19318 var size = this.map.getSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19319 this.map.pan(0.75 * size.w, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19320 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19321 case 36:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19322 // Home. Same in all browsers.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19323 var size = this.map.getSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19324 this.map.pan(-0.75 * size.w, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19325 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19326
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19327 case 43:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19328 // +/= (ASCII), keypad + (ASCII, Opera)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19329 case 61:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19330 // +/= (Mozilla, Opera, some ASCII)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19331 case 187:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19332 // +/= (IE)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19333 case 107:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19334 // keypad + (IE, Mozilla)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19335 map.zoom(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19336 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19337 case 45:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19338 // -/_ (ASCII, Opera), keypad - (ASCII, Opera)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19339 case 109:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19340 // -/_ (Mozilla), keypad - (Mozilla, IE)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19341 case 189:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19342 // -/_ (IE)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19343 case 95:
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19344 // -/_ (some ASCII)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19345 map.zoom(-1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19346 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19347 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19348 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19349 this.openlayersMap.addControl(keyboardControl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19350 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19351 if (map.options.olLayerSwitcher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19352 this.openlayersMap.addControl(new OpenLayers.Control.LayerSwitcher());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19353 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19354 if (map.options.olScaleLine) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19355 this.openlayersMap.addControl(new OpenLayers.Control.ScaleLine());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19356 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19357 this.gui.resize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19358 this.openlayersMap.updateSize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19359 this.setBaseLayers();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19360 this.gui.setMapsDropdown();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19361 this.gui.setMap();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19362 this.openlayersMap.addLayers([this.objectLayer, this.markerLayer]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19363
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19364 if (map.options.boundaries) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19365 var boundaries = map.options.boundaries;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19366 var bounds = new OpenLayers.Bounds(boundaries.minLon, boundaries.minLat, boundaries.maxLon, boundaries.maxLat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19367 var projectionBounds = bounds.transform(this.openlayersMap.displayProjection, this.openlayersMap.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19368 this.openlayersMap.zoomToExtent(projectionBounds);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19369 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19370 this.openlayersMap.zoomToMaxExtent();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19371 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19372
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19373 // manages selection of elements if a polygon was drawn
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19374 this.drawnPolygonHandler = function(polygon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19375 if (map.mds.getAllObjects() == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19376 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19377 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19378 var polygonFeature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19379 if ( polygon instanceof OpenLayers.Geometry.Polygon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19380 polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon([polygon]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19381 } else if ( polygon instanceof OpenLayers.Geometry.MultiPolygon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19382 polygonFeature = new OpenLayers.Feature.Vector(polygon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19384 map.polygons.push(polygonFeature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19385 var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19386 style.graphicZIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19387 polygonFeature.style = style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19388 map.objectLayer.addFeatures([polygonFeature]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19389 try {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19390 map.activeControl.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19391 } catch(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19392 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19393 var circles = map.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19394 for (var i = 0; i < circles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19395 for (var j = 0; j < circles[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19396 var c = circles[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19397 if (map.inPolygon(c)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19398 if ( typeof c.fatherBin != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19399 for (var k = 0; k < c.fatherBin.circles.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19400 if (c.fatherBin.circles[k]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19401 c.fatherBin.circles[k].setSelection(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19402 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19403 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19404 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19405 c.setSelection(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19406 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19407 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19408 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19409 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19410 map.mapSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19411 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19412
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19413 this.polygonDeselection = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19414 var circles = map.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19415 for (var i = 0; i < circles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19416 for (var j = 0; j < circles[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19417 var c = circles[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19418 if (map.inPolygon(c)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19419 c.setSelection(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19420 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19421 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19422 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19423 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19424 this.snapper = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19425 if (map.polygons.length == 0 || !map.options.multiSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19426 map.deselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19429 if (map.options.polygonSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19430 this.drawPolygon = new OpenLayers.Control.DrawFeature(map.objectLayer, OpenLayers.Handler.Polygon, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19431 displayClass : "olControlDrawFeaturePolygon",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19432 callbacks : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19433 "done" : map.drawnPolygonHandler,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19434 "create" : map.snapper
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19435 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19436 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19437 this.openlayersMap.addControl(this.drawPolygon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19438 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19439
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19440 if (map.options.circleSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19441 this.drawCircle = new OpenLayers.Control.DrawFeature(map.objectLayer, OpenLayers.Handler.RegularPolygon, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19442 displayClass : "olControlDrawFeaturePolygon",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19443 handlerOptions : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19444 sides : 40
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19445 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19446 callbacks : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19447 "done" : map.drawnPolygonHandler,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19448 "create" : map.snapper
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19449 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19450 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19451 this.openlayersMap.addControl(this.drawCircle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19452 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19453
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19454 if (map.options.squareSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19455 this.drawSquare = new OpenLayers.Control.DrawFeature(map.objectLayer, OpenLayers.Handler.RegularPolygon, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19456 displayClass : "olControlDrawFeaturePolygon",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19457 handlerOptions : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19458 sides : 4
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19459 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19460 callbacks : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19461 "done" : map.drawnPolygonHandler,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19462 "create" : map.snapper
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19463 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19464 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19465 this.openlayersMap.addControl(this.drawSquare);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19466 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19467
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19468 if (map.options.polygonSelect || map.options.circleSelect || map.options.squareSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19469 this.dragArea = new OpenLayers.Control.DragFeature(map.objectLayer, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19470 onStart : function(feature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19471 feature.style.graphicZIndex = 10000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19472 map.polygonDeselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19473 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19474 onComplete : function(feature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19475 feature.style.graphicZIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19476 map.drawnPolygonHandler(feature.geometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19477 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19478 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19479 this.openlayersMap.addControl(this.dragArea);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19480
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19481 this.modifyArea = new OpenLayers.Control.ModifyFeature(map.objectLayer, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19482 onStart : function(feature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19483 feature.style.graphicZIndex = 10000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19484 map.polygonDeselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19485 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19486 onComplete : function(feature) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19487 feature.style.graphicZIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19488 map.drawnPolygonHandler(feature.geometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19489 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19490 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19491 this.openlayersMap.addControl(this.modifyArea);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19492 this.modifyArea.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19493
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19494 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19495
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19496 // calculates the tag cloud
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19497 // manages hover selection of point objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19498 var hoverSelect = function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19499 var object = event.feature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19500 if (object.geometry instanceof OpenLayers.Geometry.Point) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19501 if ( typeof map.placenameTags != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19502 map.placenameTags.remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19503 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19504 var circle = event.feature.parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19505 if ( circle instanceof CircleObject) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19506 circle.placenameTags = new PlacenameTags(circle, map);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19507 map.placenameTags = circle.placenameTags;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19508 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19509 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19510 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19511 event.feature.style.fillOpacity = 0.2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19512 event.feature.style.strokeOpacity = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19513 map.objectLayer.drawFeature(event.feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19514 circle.placenameTags = new PackPlacenameTags(circle,map);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19515 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19516 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19517 circle.placenameTags.calculate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19518 map.mapCircleHighlight(object.parent, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19519 if ( typeof map.featureInfo != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19520 map.featureInfo.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19521 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19522 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19523 map.dragControl.checkStatus();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19524 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19525 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19526 var hoverUnselect = function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19527 var object = event.feature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19528 if (object.geometry instanceof OpenLayers.Geometry.Point) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19529 var circle = event.feature.parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19530 if (!( circle instanceof CircleObject )) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19531 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19532 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19533 event.feature.style.fillOpacity = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19534 event.feature.style.strokeOpacity = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19535 map.objectLayer.drawFeature(event.feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19536 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19538 circle.placenameTags.remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19539 map.mapCircleHighlight(object.parent, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19540 if ( typeof map.featureInfo != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19541 map.featureInfo.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19542 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19543 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19544 map.dragControl.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19545 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19546 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19547 var highlightCtrl = new OpenLayers.Control.SelectFeature(this.objectLayer, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19548 hover : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19549 highlightOnly : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19550 renderIntent : "temporary",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19551 eventListeners : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19552 featurehighlighted : hoverSelect,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19553 featureunhighlighted : hoverUnselect
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19554 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19555 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19556 this.openlayersMap.addControl(highlightCtrl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19557 highlightCtrl.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19558
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19559 this.selectFeature = new OpenLayers.Control.SelectFeature(this.objectLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19560
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19561 document.onkeydown = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19562 if (e.ctrlKey) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19563 map.ctrlKey = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19564 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19565 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19566 document.onkeyup = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19567 map.ctrlKey = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19568 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19569 // manages click selection of point objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19570 var onFeatureSelect = function(event, evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19571 if (!(event.feature.geometry instanceof OpenLayers.Geometry.Point)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19572 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19573 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19574 var circle = event.feature.parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19575 if (map.options.multiSelection && map.ctrlKey) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19576 if (map.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19577 map.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19578 map.selectedGlyph = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19579 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19580 circle.toggleSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19581 map.mapSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19582 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19583 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19584 map.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19585 circle.setSelection(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19586 map.objectLayer.drawFeature(circle.feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19587 if (map.options.popups) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19588 if (map.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19589 map.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19590 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19591 var lonlat = event.feature.geometry.getBounds().getCenterLonLat();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19592 var pixel = map.openlayersMap.getPixelFromLonLat(lonlat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19593 map.selectedGlyph = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19594 lon : lonlat.lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19595 lat : lonlat.lat
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19596 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19597 map.popup = new PlacenamePopup(map);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19598 map.popup.createPopup(pixel.x, pixel.y, circle.placenameTags.placeLabels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19599 if (map.options.selectDefault) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19600 circle.placenameTags.selectLabel();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19601 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19602 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19603 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19604 this.objectLayer.events.on({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19605 "featureselected" : onFeatureSelect
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19606 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19608 this.openlayersMap.addControl(this.selectFeature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19609 this.selectFeature.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19610
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19611 if (this.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19612 this.zoomSlider.setMaxAndLevels(1000, this.openlayersMap.getNumZoomLevels());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19613 this.zoomSlider.setValue(this.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19614 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19615
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19616 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19618 shift : function(shiftX, shiftY) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19619 this.openlayersMap.pan(shiftX, shiftY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19620 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19621
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19622 addBaseLayers : function(layers) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19623 if ( layers instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19624 for (var i in layers ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19625 var layer = new OpenLayers.Layer.WMS(layers[i].name, layers[i].url, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19626 projection : "EPSG:4326",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19627 layers : layers[i].layer,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19628 transparent : "true",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19629 format : "image/png"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19630 }, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19631 isBaseLayer : true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19632 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19633 this.baseLayers.push(layer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19634 this.openlayersMap.addLayers([layer]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19635 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19636 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19637 this.gui.setMapsDropdown();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19638 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19639
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19640 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19641 * set online available maps for Google, Bing and OSM
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19642 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19643 setBaseLayers : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19644 this.baseLayers = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19645 if (this.options.googleMaps) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19646 // see http://openlayers.org/blog/2010/07/10/google-maps-v3-for-openlayers/ for information
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19647 var gphy = new OpenLayers.Layer.Google("Google Physical", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19648 type : google.maps.MapTypeId.TERRAIN,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19649 minZoomLevel : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19650 maxZoomLevel : 19
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19651 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19652 var gmap = new OpenLayers.Layer.Google("Google Streets", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19653 minZoomLevel : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19654 maxZoomLevel : 19
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19655 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19656 var ghyb = new OpenLayers.Layer.Google("Google Hybrid", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19657 type : google.maps.MapTypeId.HYBRID,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19658 minZoomLevel : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19659 maxZoomLevel : 19
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19660 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19661 var gsat = new OpenLayers.Layer.Google("Google Satellite", {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19662 type : google.maps.MapTypeId.SATELLITE,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19663 minZoomLevel : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19664 maxZoomLevel : 19
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19665 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19666 this.baseLayers.push(gphy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19667 this.baseLayers.push(gmap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19668 this.baseLayers.push(ghyb);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19669 this.baseLayers.push(gsat);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19670 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19671 if (this.options.bingMaps) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19672 // see http://openlayers.org/blog/2010/12/18/bing-tiles-for-openlayers/ for information
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19673 var apiKey = this.options.bingApiKey;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19674 var road = new OpenLayers.Layer.Bing({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19675 name : "Road",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19676 key : apiKey,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19677 type : "Road"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19678 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19679 var hybrid = new OpenLayers.Layer.Bing({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19680 name : "Hybrid",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19681 key : apiKey,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19682 type : "AerialWithLabels"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19683 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19684 var aerial = new OpenLayers.Layer.Bing({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19685 name : "Aerial",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19686 key : apiKey,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19687 type : "Aerial"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19688 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19689 this.baseLayers.push(road);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19690 this.baseLayers.push(hybrid);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19691 this.baseLayers.push(aerial);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19692 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19693 if (this.options.osmMaps) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19694 this.baseLayers.push(new OpenLayers.Layer.OSM('Open Street Map', '', {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19695 sphericalMercator : true,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19696 zoomOffset : 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19697 resolutions : this.resolutions
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19698 }));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19699 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19700 for (var i = 0; i < this.baseLayers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19701 this.openlayersMap.addLayers([this.baseLayers[i]]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19702 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19703 if (this.options.alternativeMap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19704 this.addBaseLayers([this.options.alternativeMap]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19705 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19706 for (var i = 0; i < this.baseLayers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19707 if (this.baseLayers[i].name == this.options.baseLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19708 this.setMap(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19709 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19710 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19711 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19712
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19713 getBaseLayerName : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19714 return this.openlayersMap.baseLayer.name;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19715 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19716
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19717 setOverlays : function(layers) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19718 var map = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19719 for (var i in this.wmsOverlays ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19720 this.openlayersMap.removeLayer(this.wmsOverlays[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19721 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19722 this.wmsOverlays = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19723 var featureInfoLayers = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19724 if ( layers instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19725 for (var i in layers ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19726 var layer = new OpenLayers.Layer.WMS(layers[i].name, layers[i].url, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19727 projection : "EPSG:4326",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19728 layers : layers[i].layer,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19729 transparent : "true",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19730 format : "image/png"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19731 }, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19732 isBaseLayer : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19733 visibility : map.options.overlayVisibility
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19734 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19735 this.wmsOverlays.push(layer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19736 if (layers[i].featureInfo) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19737 featureInfoLayers.push(layer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19738 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19739 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19740 this.openlayersMap.addLayers(this.wmsOverlays);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19742 if (this.wmsOverlays.length > 0 && map.options.overlayVisibility) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19743 var map = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19744 if ( typeof this.featureInfo != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19745 this.featureInfo.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19746 this.openlayersMap.removeControl(this.featureInfo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19747 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19748 this.featureInfo = new OpenLayers.Control.WMSGetFeatureInfo({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19749 url : '/geoserver/wms',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19750 layers : featureInfoLayers,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19751 eventListeners : {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19752 getfeatureinfo : function(event) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19753 if (event.text == '') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19754 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19755 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19756 var lonlat = map.openlayersMap.getLonLatFromPixel(new OpenLayers.Pixel(event.xy.x, event.xy.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19757 map.selectedGlyph = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19758 lon : lonlat.lon,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19759 lat : lonlat.lat
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19760 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19761 if ( typeof map.popup != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19762 map.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19763 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19764 map.popup = new MapPopup(map);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19765 map.popup.initialize(event.xy.x, event.xy.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19766 map.popup.setContent(event.text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19767 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19768 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19769 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19770 this.openlayersMap.addControl(this.featureInfo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19771 this.featureInfo.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19772 this.activateCountrySelector(this.wmsOverlays[this.wmsOverlays.length - 1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19773 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19774 this.deactivateCountrySelector();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19775 if (this.openlayersMap.baseLayer instanceof OpenLayers.Layer.WMS) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19776 this.activateCountrySelector(this.openlayersMap.baseLayer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19778 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19779 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19781 addBaseLayer : function(layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19782 this.baseLayers.push(layer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19783 this.openlayersMap.addLayers([layer]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19784 for (var i in this.baseLayers ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19785 if (this.baseLayers[i].name == this.options.baseLayer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19786 this.setMap(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19787 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19788 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19789 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19791 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19792 * draws the object layer.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19793 * @param {boolean} zoom if there was a zoom; if not, the new boundary of the map is calculated
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19794 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19795 drawObjectLayer : function(zoom) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19796 if ( typeof this.placenameTags != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19797 this.placenameTags.remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19798 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19799 var points = this.mds.getAllObjects();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19800 if (points == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19801 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19802 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19803 this.objectLayer.removeAllFeatures();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19804
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19805 if (zoom) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19806 var minLat, maxLat, minLon, maxLon;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19807 var pointsHighestZoom = points[points.length - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19808 for (var i = 0; i < pointsHighestZoom.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19809 for (var j = 0; j < pointsHighestZoom[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19810 var point = pointsHighestZoom[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19811 if (minLon == null || point.originX < minLon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19812 minLon = point.originX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19813 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19814 if (maxLon == null || point.originX > maxLon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19815 maxLon = point.originX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19816 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19817 if (minLat == null || point.originY < minLat) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19818 minLat = point.originY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19819 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19820 if (maxLat == null || point.originY > maxLat) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19821 maxLat = point.originY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19822 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19823 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19824 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19825 if (minLon == maxLon && minLat == maxLat) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19826 this.openlayersMap.setCenter(new OpenLayers.LonLat(minLon, minLat));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19827 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19828 var gapX = 0.1 * (maxLon - minLon );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19829 var gapY1 = 0.1 * (maxLat - minLat );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19830 var gapY2 = (this.gui.headerHeight / this.gui.mapWindow.offsetHeight + 0.1 ) * (maxLat - minLat );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19831 this.openlayersMap.zoomToExtent(new OpenLayers.Bounds(minLon - gapX, minLat - gapY1, maxLon + gapX, maxLat + gapY2));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19832 this.openlayersMap.zoomTo(Math.floor(this.openlayersMap.getZoom()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19833 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19834 if (this.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19835 this.zoomSlider.setValue(this.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19836 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19837 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19838 var displayPoints = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19839 var resolution = this.openlayersMap.getResolution();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19840 for (var i = 0; i < displayPoints.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19841 for (var j = 0; j < displayPoints[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19842 var p = displayPoints[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19843 var x = p.originX + resolution * p.shiftX;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19844 var y = p.originY + resolution * p.shiftY;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19845 p.feature.geometry.x = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19846 p.feature.geometry.y = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19847 p.olFeature.geometry.x = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19848 p.olFeature.geometry.y = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19849 p.feature.style.graphicZIndex = this.zIndices[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19850 p.olFeature.style.graphicZIndex = this.zIndices[i] + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19851 this.objectLayer.addFeatures([p.feature]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19852 this.objectLayer.addFeatures([p.olFeature]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19853 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19854 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19855 var zoomLevel = this.openlayersMap.getZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19856 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19857 for (var i = 0; i < this.bins[zoomLevel].length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19858 var p = this.bins[zoomLevel][i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19859 p.feature.style.graphicZIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19860 this.objectLayer.addFeatures([p.feature]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19861 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19862 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19863
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19864 var dist = function(p1, p2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19865 return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19866 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19867
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19868 this.highlightChanged(this.selection.getObjects(this.core));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19869
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19870 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19871
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19872 riseLayer : function(id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19873 this.lastId = id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19874 if ( typeof id == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19875 id = this.lastId || 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19876 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19877 this.zIndices[id] = this.layerZIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19878 this.layerZIndex += 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19879 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19880 this.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19881 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19883 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19884 * initializes the object layer.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19885 * all point representations for all zoom levels are calculated and initialized
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19886 * @param {MapObject[][]} mapObjects an array of map objects from different (1-4) sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19887 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19888 initWidget : function(datasets, zoom) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19889
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19890 this.clearMap();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19891
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19892 this.datasets = datasets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19893 var mapObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19894 for (var i = 0; i < datasets.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19895 mapObjects.push(datasets[i].objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19896 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19897 if (mapObjects.length > 4) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19898 this.options.circlePackings = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19899 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19900 this.options.circlePackings = this.formerCP;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19901 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19902
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19903 if ( typeof mapObjects == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19904 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19905 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19906
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19907 this.count = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19908 this.objectCount = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19909 for (var i = 0; i < mapObjects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19910 var c = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19911 for (var j = 0; j < mapObjects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19912 if (mapObjects[i][j].isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19913 c += mapObjects[i][j].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19914 this.objectCount++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19915 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19916 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19917 this.count += c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19918 this.zIndices.push(this.layerZIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19919 this.layerZIndex += 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19920 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19921
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19922 this.mds.initialize(mapObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19923 var points = this.mds.getAllObjects();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19924 if (points == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19925 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19926 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19928 var getArea = function(radius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19929 return Math.PI * radius * radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19930 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19931 for (var i = 0; i < points.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19932 var area = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19933 var maxRadius = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19934 for (var j = 0; j < points[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19935 for (var k = 0; k < points[i][j].length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19936 if (points[i][j][k].radius > maxRadius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19937 maxRadius = points[i][j][k].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19938 area = getArea(maxRadius);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19939 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19940 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19941 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19942 var minArea = getArea(this.options.minimumRadius);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19943 var areaDiff = area - minArea;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19944 for (var j = 0; j < points[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19945 for (var k = 0; k < points[i][j].length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19946 var point = points[i][j][k];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19947 var c = GeoTemConfig.getColor(point.search);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19948 var transparency = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19949 if (this.options.circleTransparency) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19950 var min = this.options.minTransparency;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19951 var max = this.options.maxTransparency;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19952 transparency = min + Math.abs(min - max) * (1 - (getArea(point.radius) - minArea) / areaDiff);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19953 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19954 var col = this.options.circleOutline;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19955 //transparency = 0.8;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19956 var style = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19957 fillColor : 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19958 fillOpacity : transparency,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19959 strokeWidth : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19960 strokeColor : 'rgb(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ')',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19961 stroke : col,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19962 pointRadius : point.radius,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19963 cursor : "pointer"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19964 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19965 var pointGeometry = new OpenLayers.Geometry.Point(point.originX, point.originY, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19966 var feature = new OpenLayers.Feature.Vector(pointGeometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19967 feature.style = style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19968 feature.parent = point;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19969 point.setFeature(feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19970 var olStyle = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19971 fillColor : 'rgb(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ')',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19972 fillOpacity : transparency,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19973 stroke : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19974 pointRadius : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19975 cursor : "pointer"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19976 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19977 var olPointGeometry = new OpenLayers.Geometry.Point(point.originX, point.originY, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19978 var olFeature = new OpenLayers.Feature.Vector(olPointGeometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19979 olFeature.style = olStyle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19980 olFeature.parent = point;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19981 point.setOlFeature(olFeature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19982 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19983 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19984 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19985
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19986 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19987 this.bins = this.mds.getAllBins();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19988 for (var i = 0; i < this.bins.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19989 for (var j = 0; j < this.bins[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19990 var bin = this.bins[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19991 var style = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19992 fillColor : 'rgb(140,140,140)',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19993 fillOpacity : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19994 strokeWidth : 2,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19995 strokeOpacity : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19996 strokeColor : 'rgb(140,140,140)',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19997 // stroke: false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19998 pointRadius : bin.radius,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
19999 cursor : "pointer"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20000 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20001 var pointGeometry = new OpenLayers.Geometry.Point(bin.x, bin.y, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20002 var feature = new OpenLayers.Feature.Vector(pointGeometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20003 feature.style = style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20004 feature.parent = bin;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20005 bin.feature = feature;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20006 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20007 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20008 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20010 if ( typeof zoom == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20011 this.drawObjectLayer(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20012 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20013 this.drawObjectLayer(zoom);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20014 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20015 this.gui.updateSpaceQuantity(this.count);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20016
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20017 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20018
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20019 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20020 * resets the map by destroying all additional elements except the point objects, which are replaced
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20021 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20022 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20023 if ( typeof this.placenameTags != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20024 this.placenameTags.remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20025 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20026 this.objectLayer.removeFeatures(this.polygons);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20027 this.polygons = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20028 this.objectLayer.removeFeatures(this.connections);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20029 this.connections = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20030 this.selectFeature.unselectAll();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20031 this.selectedGlyph = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20032 if (this.dragControl.activated) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20033 this.dragControl.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20034 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20035 if (this.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20036 this.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20037 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20038 this.filterBar.reset(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20039 var points = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20040 if (points == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20041 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20042 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20043 for (var i = 0; i < points.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20044 for (var j = 0; j < points[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20045 points[i][j].setSelection(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20046 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20047 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20048 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20049
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20050 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20051 * resets the map by destroying all elements
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20052 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20053 clearMap : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20054 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20055 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20056 this.zIndices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20057 this.layerZIndex = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20058 this.objectLayer.destroyFeatures();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20059 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20060
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20061 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20062 * updates the proportional selection status of a point object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20063 * @param {PointObject} point the point to update
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20064 * @param {OpenLayers.Geometry.Polygon} polygon the actual displayed map polygon
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20065 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20066 updatePoint : function(point, polygon) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20067 var olRadius = this.mds.binning.getRadius(point.overlay);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20068 if (olRadius != point.olFeature.style.pointRadius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20069 point.olFeature.style.pointRadius = olRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20070 if (polygon.containsPoint(point.feature.geometry)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20071 this.objectLayer.drawFeature(point.olFeature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20072 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20073 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20074 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20075
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20076 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20077 * updates the the object layer of the map after selections had been executed in timeplot or table or zoom level has changed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20078 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20079 highlightChanged : function(mapObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20080 this.mds.clearOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20081 if (this.selection.valid()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20082 this.mds.setOverlay(GeoTemConfig.mergeObjects(mapObjects, this.selection.getObjects()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20083 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20084 this.mds.setOverlay(mapObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20085 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20086 var points = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20087 var polygon = this.openlayersMap.getExtent().toGeometry();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20088 for (var i in points ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20089 for (var j in points[i] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20090 this.updatePoint(points[i][j], polygon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20091 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20092 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20093 this.displayConnections();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20094 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20096 selectionChanged : function(selection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20097 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20098 this.selection = selection;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20099 this.highlightChanged(selection.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20100 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20101
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20102 inPolygon : function(point) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20103 for (var i = 0; i < this.polygons.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20104 var polygon = this.polygons[i].geometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20105 for (var j = 0; j < polygon.components.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20106 if (polygon.components[j].containsPoint(point.feature.geometry)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20107 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20108 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20109 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20110 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20111 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20112 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20113
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20114 mapSelection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20115 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20116 for (var i = 0; i < this.mds.size(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20117 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20118 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20119 var circles = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20120 for (var i = 0; i < circles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20122 for (var j = 0; j < circles[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20123 var c = circles[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20124 if (c.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20125 selectedObjects[i] = selectedObjects[i].concat(c.elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20126 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20127 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20128 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20129 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20130 this.highlightChanged(selectedObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20131 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20132 this.filterBar.reset(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20133 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20134
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20135 deselection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20136 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20137 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20138 this.highlightChanged([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20139 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20140 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20141
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20142 filtering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20143 for (var i = 0; i < this.datasets.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20144 this.datasets[i].objects = this.selection.objects[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20145 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20146 this.core.triggerRefining(this.datasets);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20147 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20148
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20149 inverseFiltering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20150 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20151 for (var i = 0; i < this.mds.size(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20152 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20153 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20154 var circles = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20155 for (var i = 0; i < circles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20156 for (var j = 0; j < circles[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20157 var c = circles[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20158 if (!c.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20159 selectedObjects[i] = selectedObjects[i].concat(c.elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20160 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20161 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20162 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20163 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20164 this.filtering();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20165 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20166
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20167 mapCircleHighlight : function(circle, undo) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20168 if (this.polygons.length > 0 && this.inPolygon(circle)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20169 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20170 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20171 var mapObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20172 for (var i = 0; i < this.mds.size(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20173 mapObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20174 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20175 if (!undo && !circle.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20176 mapObjects[circle.search] = circle.elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20177 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20178 this.objectLayer.drawFeature(circle.feature);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20179 this.core.triggerHighlight(mapObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20180 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20181
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20182 mapLabelSelection : function(label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20183 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20184 for (var i = 0; i < this.mds.size(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20185 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20186 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20187 selectedObjects[label.index] = label.elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20188 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20189 this.highlightChanged(selectedObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20190 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20191 this.filterBar.reset(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20192 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20193
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20194 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20195 * displays connections between data objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20196 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20197 displayConnections : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20198 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20199 if ( typeof this.connection != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20200 this.objectLayer.removeFeatures(this.connections);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20201 this.connections = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20202 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20203 if (this.options.connections) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20204 var points = this.mds.getObjectsByZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20205 for (var i in points ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20206 for (var j in points[i] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20207
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20208 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20209 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20210
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20211 var slices = this.core.timeplot.getSlices();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20212 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20213 for (var j = 0; j < slices[i].stacks.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20214 var e = slices[i].stacks[j].elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20215 if (e.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20216 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20217 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20218 var points = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20219 for (var k = 0; k < e.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20220 var point = this.mds.getCircle(j, e[k].index).feature.geometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20221 if (arrayIndex(points, point) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20222 points.push(point);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20223 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20224 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20225 var matrix = new AdjMatrix(points.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20226 for (var k = 0; k < points.length - 1; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20227 for (var l = k + 1; l < points.length; l++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20228 matrix.setEdge(k, l, dist(points[k], points[l]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20229 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20230 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20231 var tree = Prim(matrix);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20232 var lines = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20233 for (var z = 0; z < tree.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20234 lines.push(new OpenLayers.Geometry.LineString(new Array(points[tree[z].v1], points[tree[z].v2])));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20235 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20236 this.connections[j].push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20237 first : this.mds.getCircle(j, e[0].index).feature.geometry,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20238 last : this.mds.getCircle(j, e[e.length - 1].index).feature.geometry,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20239 lines : lines,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20240 time : slices[i].date
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20241 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20242 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20243 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20244 var ltm = this.core.timeplot.leftFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20245 var rtm = this.core.timeplot.rightFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20246 if (ltm == undefined || ltm == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20247 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20248 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20249 ltm = ltm.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20250 rtm = rtm.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20251 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20252 // this.connectionLayer.destroyFeatures();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20253 if (thisConnections) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20254 for (var i = 0; i < this.connections.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20255 var c = GeoTemConfig.colors[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20256 var style = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20257 strokeColor : 'rgb(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ')',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20258 strokeOpacity : 0.5,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20259 strokeWidth : 3
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20260 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20261 var pointsToConnect = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20262 var last = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20263 for (var j = 0; j < this.connections[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20264 var c = this.connections[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20265 var ct = c.time.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20266 if (ct >= ltm && ct <= rtm) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20267 if (last != undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20268 var line = new OpenLayers.Geometry.LineString(new Array(last, c.first));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20269 this.connectionLayer.addFeatures([new OpenLayers.Feature.Vector(line, null, style)]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20270 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20271 for (var k = 0; k < c.lines.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20272 this.connectionLayer.addFeatures([new OpenLayers.Feature.Vector(c.lines[k], null, style)]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20273 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20274 last = c.last;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20275 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20276 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20277 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20278 // this.connectionLayer.redraw();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20279 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20280 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20281 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20282
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20283 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20284 * performs a zoom on the map
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20285 * @param {int} delta the change of zoom levels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20286 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20287 zoom : function(delta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20288 var zoom = this.openlayersMap.getZoom() + delta;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20289 if (this.openlayersMap.baseLayer instanceof OpenLayers.Layer.WMS) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20290 this.openlayersMap.zoomTo(zoom);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20291 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20292 this.openlayersMap.zoomTo(Math.round(zoom));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20293 if (this.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20294 this.zoomSlider.setValue(this.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20295 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20296 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20297 this.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20298 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20299 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20300
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20301 deactivateCountrySelector : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20302 this.openlayersMap.removeControl(this.selectCountry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20303 this.selectCountry = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20304 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20305
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20306 activateCountrySelector : function(layer) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20307 var map = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20308 if (this.options.countrySelect && this.options.mapSelectionTools) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20309 this.selectCountry = new OpenLayers.Control.GetFeature({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20310 protocol : OpenLayers.Protocol.WFS.fromWMSLayer(layer),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20311 click : true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20312 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20313 this.selectCountry.events.register("featureselected", this, function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20314 map.snapper();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20315 map.drawnPolygonHandler(e.feature.geometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20316 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20317 this.openlayersMap.addControl(this.selectCountry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20318 this.countrySelectionControl.enable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20319 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20320 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20321
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20322 setMap : function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20323 this.baselayerIndex = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20324 if (this.selectCountry) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20325 // if( this.wmsOverlays.length == 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20326 this.deactivateCountrySelector();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20327 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20328 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20329 if (this.baseLayers[index] instanceof OpenLayers.Layer.WMS) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20330 // if( this.wmsOverlays.length == 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20331 this.activateCountrySelector(this.baseLayers[index]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20332 // }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20333 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20334 if (this.countrySelectionControl) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20335 this.countrySelectionControl.disable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20336 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20337 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20338 this.openlayersMap.zoomTo(Math.floor(this.openlayersMap.getZoom()));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20339 this.openlayersMap.setBaseLayer(this.baseLayers[index]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20340 if (this.baseLayers[index].name == 'Open Street Map') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20341 this.osmLink.style.visibility = 'visible';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20342 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20343 this.osmLink.style.visibility = 'hidden';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20344 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20345 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20346
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20347 //vhz added title to buttons
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20348 initSelectorTools : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20349 var map = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20350 this.mapControls = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20351
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20352 if (this.options.squareSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20353 var button = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20354 $(button).addClass('mapControl');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20355 var activate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20356 map.drawSquare.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20357 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20358 var deactivate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20359 map.drawSquare.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20360 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20361 this.mapControls.push(new MapControl(this, button, 'square', activate, deactivate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20362 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20363 if (this.options.circleSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20364 var button = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20365 $(button).addClass('mapControl');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20366 var activate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20367 map.drawCircle.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20368 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20369 var deactivate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20370 map.drawCircle.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20371 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20372 this.mapControls.push(new MapControl(this, button, 'circle', activate, deactivate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20373 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20374 if (this.options.polygonSelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20375 var button = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20376 $(button).addClass('mapControl');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20377 var activate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20378 map.drawPolygon.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20379 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20380 var deactivate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20381 map.drawPolygon.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20382 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20383 this.mapControls.push(new MapControl(this, button, 'polygon', activate, deactivate));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20384 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20385 if (this.options.countrySelect) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20386 var button = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20387 $(button).addClass('mapControl');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20388 var activate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20389 map.selectCountry.activate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20390 map.dragControl.disable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20391 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20392 var deactivate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20393 map.selectCountry.deactivate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20394 map.dragControl.enable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20395 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20396 this.countrySelectionControl = new MapControl(this, button, 'country', activate, deactivate);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20397 this.mapControls.push(this.countrySelectionControl);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20398 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20399 if( !(this.openlayersMap.baseLayer instanceof OpenLayers.Layer.WMS) ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20400 this.countrySelectionControl.disable();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20401 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20402 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20403 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20404 return this.mapControls;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20405 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20406
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20407 getZoom : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20408 return this.openlayersMap.getZoom();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20409 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20410
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20411 setMarker : function(lon, lat) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20412 var p = new OpenLayers.Geometry.Point(lon, lat, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20413 p.transform(this.openlayersMap.displayProjection, this.openlayersMap.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20414 this.openlayersMap.setCenter(new OpenLayers.LonLat(p.x, p.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20415 var size = new OpenLayers.Size(22, 33);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20416 var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20417 var icon = new OpenLayers.Icon(GeoTemConfig.path + 'marker.png', size, offset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20418 var marker = new OpenLayers.Marker(new OpenLayers.LonLat(p.x, p.y), icon);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20419 marker.setOpacity(0.9);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20420 this.markerLayer.setZIndex(parseInt(this.objectLayer.getZIndex()) + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20421 this.markerLayer.addMarker(marker);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20422 // find nearest neighbor
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20423 var nearestNeighbor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20424 var points = this.mds.getAllObjects();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20425 if (points == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20426 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20428 var dist = function(p1, p2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20429 return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20430 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20431 var zoomLevels = this.openlayersMap.getNumZoomLevels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20432 var pointSet = points[zoomLevels - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20433 var closestDistance = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20434 var closestPoint;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20435 for (var i = 0; i < pointSet.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20436 for (var j = 0; j < pointSet[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20437 var point = pointSet[i][j].feature.geometry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20438 var d = dist(point, p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20439 if (!closestDistance || d < closestDistance) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20440 closestDistance = d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20441 closestPoint = point;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20442 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20443 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20444 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20445 // find minimal zoom level
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20446 var gap = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20447 var x_s = this.gui.mapWindow.offsetWidth / 2 - gap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20448 var y_s = this.gui.mapWindow.offsetHeight / 2 - gap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20449 var xDist = Math.abs(p.x - closestPoint.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20450 var yDist = Math.abs(p.y - closestPoint.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20451 for (var i = 0; i < zoomLevels; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20452 var resolution = this.openlayersMap.getResolutionForZoom(zoomLevels - i - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20453 if (xDist / resolution < x_s && yDist / resolution < y_s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20454 this.openlayersMap.zoomTo(zoomLevels - i - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20455 if (this.zoomSlider) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20456 this.zoomSlider.setValue(this.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20458 this.drawObjectLayer(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20459 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20460 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20461 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20462 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20463
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20464 removeMarker : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20465 this.markerLayer.removeMarker(this.markerLayer.markers[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20466 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20467
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20468 getLevelOfDetail : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20469 var zoom = Math.floor(this.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20470 if (zoom <= 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20471 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20472 } else if (zoom <= 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20473 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20474 } else if (zoom <= 8) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20475 return 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20476 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20477 return 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20478 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20479 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20480 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20481 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20482 * TimeConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20483 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20484 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20485 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20486 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20487 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20488 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20489 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20490 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20491 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20492 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20493 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20494 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20495 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20496 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20497 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20498 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20499 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20500 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20501
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20502 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20503 * @class TimeConfig
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20504 * Time Configuration File
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20505 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20506 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20507 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20508 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20509 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20510 function TimeConfig(options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20511
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20512 this.options = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20513 timeTitle : 'GeoTemCo Time View', // title will be shown in timeplot header
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20514 timeIndex : 0, // index = position in date array; for multiple dates the 2nd timeplot refers to index 1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20515 timeWidth : false, // false or desired width css definition for the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20516 timeHeight : '100px', // false or desired height css definition for the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20517 defaultMinDate : new Date(2012, 0, 1), // required, when empty timelines are possible
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20518 defaultMaxDate : new Date(), // required, when empty timelines are possible
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20519 timeCanvasFrom : '#EEE', // time widget background gradient color top
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20520 timeCanvasTo : '#EEE', // time widget background gradient color bottom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20521 rangeBoxColor : "white", // fill color for time range box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20522 rangeBorder : "1px solid #de7708", // border of frames
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20523 dataInformation : true, // show/hide data information
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20524 rangeAnimation : true, // show/hide animation buttons
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20525 scaleSelection : true, // show/hide scale selection buttons
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20526 linearScale : true, // true for linear value scaling, false for logarithmic
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20527 unitSelection : true, // show/hide time unit selection dropdown
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20528 timeUnit : -1 // minimum temporal unit (SimileAjax.DateTime or -1 if none) of the data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20529 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20530 if ( typeof options != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20531 $.extend(this.options, options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20532 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20533
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20534 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20535 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20536 * TimeGui.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20537 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20538 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20539 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20540 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20541 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20542 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20543 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20544 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20545 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20546 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20547 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20548 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20549 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20550 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20551 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20552 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20553 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20554 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20555
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20556 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20557 * @class TimeGui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20558 * Time GUI Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20559 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20560 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20561 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20562 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20563 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20564 * @param {TimeWidget} parent time widget object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20565 * @param {HTML object} div parent div to append the time gui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20566 * @param {JSON} options time configuration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20567 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20568 function TimeGui(plot, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20569
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20570 var gui = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20571
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20572 this.plot = plot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20573
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20574 this.container = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20575 if (options.timeWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20576 this.container.style.width = options.timeWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20577 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20578 if (options.timeHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20579 this.container.style.height = options.timeHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20580 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20581 this.container.style.position = 'relative';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20582
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20583 var w = this.container.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20584 var h = this.container.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20586 var toolbarTable = document.createElement("table");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20587 toolbarTable.setAttribute('class', 'ddbToolbar');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20588 this.container.appendChild(toolbarTable);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20590 this.plotWindow = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20591 this.plotWindow.id = "plotWindow";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20592 // this.plotWindow.style.width = w + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20594 this.plotWindow.style.height = (h + 12) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20595 this.container.style.height = (h + 12) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20596
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20597 this.plotWindow.onmousedown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20598 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20599 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20600
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20601 this.plotContainer = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20602 this.plotContainer.id = "plotContainer";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20603 // this.plotContainer.style.width = w + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20604 this.plotContainer.style.height = h + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20605 this.plotContainer.style.position = "absolute";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20606 this.plotContainer.style.zIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20607 this.plotContainer.style.top = "12px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20608 this.plotWindow.appendChild(this.plotContainer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20609 this.container.appendChild(this.plotWindow);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20610
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20611 this.timeplotDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20612 this.timeplotDiv.style.left = "16px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20613 this.timeplotDiv.style.width = (w - 32) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20614 this.timeplotDiv.style.height = h + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20615 this.plotContainer.appendChild(this.timeplotDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20616
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20617 var cv = document.createElement("canvas");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20618 cv.setAttribute('class', 'plotCanvas');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20619 this.plotWindow.appendChild(cv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20620 if (!cv.getContext && G_vmlCanvasManager)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20621 cv = G_vmlCanvasManager.initElement(cv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20622 var ctx = cv.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20623
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20624 var setCanvas = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20625 cv.width = gui.plotWindow.clientWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20626 cv.height = gui.plotWindow.clientHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20627 var gradient = ctx.createLinearGradient(0, 0, 0, gui.plotWindow.clientHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20628 gradient.addColorStop(0, options.timeCanvasFrom);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20629 gradient.addColorStop(1, options.timeCanvasTo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20630 ctx.fillStyle = gradient;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20631 ctx.fillRect(0, 0, gui.plotWindow.clientWidth, gui.plotWindow.clientHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20632 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20633 setCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20635 this.resize = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20636 gui.timeplotDiv.style.width = (gui.container.offsetWidth - 32) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20637 ctx.clearRect(0,0,gui.plotWindow.clientWidth, gui.plotWindow.clientHeight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20638 if( typeof plot.datasets != "undefined" ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20639 plot.redrawPlot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20640 plot.resetOpacityPlots();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20641 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20642 setCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20643 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20644
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20645 var titles = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20646 toolbarTable.appendChild(titles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20647 var tools = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20648 toolbarTable.appendChild(tools);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20649
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20650 this.timeUnitTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20651 this.timeUnitTitle.innerHTML = GeoTemConfig.getString('timeUnit');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20652 this.timeUnitSelector = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20653 if (options.unitSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20654 tools.appendChild(this.timeUnitSelector);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20655 titles.appendChild(this.timeUnitTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20656 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20658 this.timeAnimation = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20659 this.timeAnimation.innerHTML = GeoTemConfig.getString('timeAnimation');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20660 var timeAnimationTools = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20661
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20662 var status;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20663 this.updateAnimationButtons = function(s) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20664 status = s;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20665 if (status == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20666 gui.playButton.setAttribute('class', 'smallButton playDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20667 gui.pauseButton.setAttribute('class', 'smallButton pauseDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20668 } else if (status == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20669 gui.playButton.setAttribute('class', 'smallButton playEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20670 gui.pauseButton.setAttribute('class', 'smallButton pauseDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20671 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20672 gui.playButton.setAttribute('class', 'smallButton playDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20673 gui.pauseButton.setAttribute('class', 'smallButton pauseEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20674 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20675 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20676 this.playButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20677 this.playButton.title = GeoTemConfig.getString('playButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20678 timeAnimationTools.appendChild(this.playButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20679 this.playButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20680 if (status == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20681 plot.play();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20682 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20683 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20684
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20685 this.pauseButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20686 this.pauseButton.title = GeoTemConfig.getString('pauseButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20687 timeAnimationTools.appendChild(this.pauseButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20688 this.pauseButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20689 if (status == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20690 plot.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20691 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20692 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20693
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20694 this.valueScale = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20695 this.valueScale.innerHTML = GeoTemConfig.getString('valueScale');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20696 var valueScaleTools = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20697
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20698 var linearPlot;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20699 var setValueScale = function(linScale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20700 if (linearPlot != linScale) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20701 linearPlot = linScale;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20702 if (linearPlot) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20703 gui.linButton.setAttribute('class', 'smallButton linearPlotActivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20704 gui.logButton.setAttribute('class', 'smallButton logarithmicPlotDeactivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20705 plot.drawLinearPlot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20706 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20707 gui.linButton.setAttribute('class', 'smallButton linearPlotDeactivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20708 gui.logButton.setAttribute('class', 'smallButton logarithmicPlotActivated');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20709 plot.drawLogarithmicPlot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20710 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20711 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20712 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20713 this.linButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20714 this.linButton.title = GeoTemConfig.getString('linearPlot');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20715 valueScaleTools.appendChild(this.linButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20716 this.linButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20717 setValueScale(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20718 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20719
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20720 this.logButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20721 this.logButton.title = GeoTemConfig.getString('logarithmicPlot');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20722 valueScaleTools.appendChild(this.logButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20723 this.logButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20724 setValueScale(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20725 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20726 if (options.rangeAnimation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20727 titles.appendChild(this.timeAnimation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20728 tools.appendChild(timeAnimationTools);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20729 this.updateAnimationButtons(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20730 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20731
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20732 if (options.scaleSelection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20733 titles.appendChild(this.valueScale);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20734 tools.appendChild(valueScaleTools);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20735 setValueScale(options.linearScale);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20736 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20737
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20738 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20739 this.filterTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20740 titles.appendChild(this.filterTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20741 this.filterTitle.innerHTML = GeoTemConfig.getString('filter');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20742 this.filterOptions = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20743 tools.appendChild(this.filterOptions);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20744 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20746 if (options.dataInformation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20747 this.infoTitle = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20748 this.infoTitle.innerHTML = options.timeTitle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20749 titles.appendChild(this.infoTitle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20750 var timeSum = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20751 this.timeElements = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20752 this.timeElements.setAttribute('class', 'ddbElementsCount');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20753 timeSum.appendChild(this.timeElements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20754 tools.appendChild(timeSum);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20755 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20756
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20757 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20758 var tooltip = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20759 tooltip.setAttribute('class','ddbTooltip');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20760 toolbarTable.appendChild(tooltip);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20761
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20762 tooltip.onmouseover = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20763 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20764 getPublisher().Publish('TooltipContent', {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20765 content: GeoTemConfig.getString(GeoTemConfig.language,'timeHelp'),
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20766 target: $(tooltip)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20767 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20768
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20769 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20770 tooltip.onmouseout = function(){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20771 //getPublisher().Publish('TooltipContent');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20772 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20773 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20774
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20775 this.setHeight = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20776 this.container.style.height = (this.plotWindow.offsetHeight + toolbarTable.offsetHeight) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20777 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20778
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20779 this.updateTimeQuantity = function(count) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20780 if (options.dataInformation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20781 this.plotCount = count;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20782 if (count != 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20783 this.timeElements.innerHTML = this.beautifyCount(count) + " " + GeoTemConfig.getString('results');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20784 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20785 this.timeElements.innerHTML = this.beautifyCount(count) + " " + GeoTemConfig.getString('result');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20786 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20787 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20788 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20789
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20790 this.setTimeUnitDropdown = function(units) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20791 $(this.timeUnitSelector).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20792 var gui = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20793 var timeUnits = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20794 var addUnit = function(unit, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20795 var setUnit = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20796 gui.plot.setTimeUnit(unit.unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20797 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20798 timeUnits.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20799 name : unit.label,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20800 onclick : setUnit
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20801 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20802 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20803 for (var i = 0; i < units.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20804 addUnit(units[i], i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20805 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20806 this.timeUnitDropdown = new Dropdown(this.timeUnitSelector, timeUnits, GeoTemConfig.getString('selectTimeUnit'));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20807 this.timeUnitDropdown.setEntry(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20808 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20809 this.setTimeUnitDropdown([{
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20810 name : 'none',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20811 id : -1
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20812 }]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20813
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20814 this.beautifyCount = function(count) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20815 var c = count + '';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20816 var p = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20817 var l = c.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20818 while (l - p > 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20819 p += 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20820 c = c.substring(0, l - p) + "." + c.substring(l - p);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20821 p++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20822 l++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20823 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20824 return c;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20825 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20826
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20827 this.hideTimeUnitSelection = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20828 this.timeUnitTitle.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20829 this.timeUnitSelector.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20830 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20831 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20832 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20833 * TimeWidget.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20834 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20835 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20836 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20837 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20838 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20839 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20840 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20841 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20842 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20843 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20844 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20845 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20846 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20847 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20848 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20849 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20850 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20851 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20852
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20853 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20854 * @class TimeWidget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20855 * TableWidget Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20856 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20857 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20858 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20859 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20860 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20861 * @param {TimeWrapper} core wrapper for interaction to other widgets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20862 * @param {HTML object} div parent div to append the time widget div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20863 * @param {JSON} options user specified configuration that overwrites options in TimeConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20864 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20865 function TimeWidget(core, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20866
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20867 this.core = core;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20868 this.core.setWidget(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20869 this.timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20870 this.dataSources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20871 this.eventSources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20872 this.tds
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20873 this.timeGeometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20874 this.valueGeometry
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20875 this.canvas
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20876
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20877 this.leftFlagPole
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20878 this.rightFlagPole
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20879 this.rangeBox
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20880 this.leftHandle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20881 this.rightHandle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20882
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20883 this.leftFlagPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20884 this.leftFlagTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20885 this.rightFlagPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20886 this.rightFlagTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20887
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20888 this.mouseDownTime
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20889 this.mouseUpTime
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20890 this.mouseTempTime
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20891 this.mouseDownPos
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20892 this.mouseUpPos
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20893 this.mouseTempPos
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20894
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20895 this.status
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20896 this.slider
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20897
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20898 this.options = (new TimeConfig(options)).options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20899 this.gui = new TimeGui(this, div, this.options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20900 this.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20901
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20902 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20904 TimeWidget.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20906 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20907 * clears the timeplot canvas and the timeGeometry properties
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20908 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20909 clearTimeplot : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20910 this.timeplot._clearCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20911 this.timeGeometry._earliestDate = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20912 this.timeGeometry._latestDate = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20913 this.valueGeometry._minValue = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20914 this.valueGeometry._maxValue = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20915 this.highlightedSlice = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20916 this.timeGeometry._clearLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20917 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20918 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20919
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20920 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20921 * initializes the timeplot elements with arrays of time objects
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20922 * @param {TimeObject[][]} timeObjects an array of time objects from different (1-4) sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20923 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20924 initWidget : function(datasets) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20925 this.datasets = datasets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20926 var timeObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20927 for (var i = 0; i < datasets.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20928 timeObjects.push(datasets[i].objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20929 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20930 this.clearTimeplot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20931 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20932 for (var i = 0; i < this.timeplot._plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20933 this.timeplot._plots[i].dispose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20934 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20935 this.dataSources = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20936 this.plotInfos = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20937 this.eventSources = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20938 var granularity = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20939 this.count = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20940 for (var i = 0; i < timeObjects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20941 var eventSource = new Timeplot.DefaultEventSource();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20942 var dataSource = new Timeplot.ColumnSource(eventSource, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20943 this.dataSources.push(dataSource);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20944 this.eventSources.push(eventSource);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20945 var c = GeoTemConfig.getColor(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20946 var plotInfo = Timeplot.createPlotInfo({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20947 id : "plot" + i,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20948 dataSource : dataSource,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20949 timeGeometry : this.timeGeometry,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20950 valueGeometry : this.valueGeometry,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20951 fillGradient : false,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20952 lineColor : 'rgba(' + c.r1 + ',' + c.g1 + ',' + c.b1 + ', 1)',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20953 fillColor : 'rgba(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ', 0.3)',
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20954 showValues : true
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20955 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20956 this.plotInfos.push(plotInfo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20957 for (var j = 0; j < timeObjects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20958 var o = timeObjects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20959 if (o.isTemporal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20960 var g = o.dates[this.options.timeIndex].granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20961 if (g == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20962 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20963 } else if (g > granularity) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20964 granularity = g;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20965 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20966 this.count += o.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20967 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20968 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20969 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20970 this.timeGeometry._granularity = granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20971 this.timeGeometry._clearLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20972 this.timeplot.resetPlots(this.plotInfos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20973 if (this.plotInfos.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20974 this.initLabels(this.timeplot.regularGrid());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20975 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20976 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20977 this.timeGeometry.extendedDataSource = this.tds;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20978 this.tds.initialize(this.dataSources, this.eventSources, timeObjects, granularity, this.options.timeUnit, this.gui.timeplotDiv.offsetWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20979 this.gui.setTimeUnitDropdown(this.tds.availableUnits);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20980 this.gui.timeUnitDropdown.setEntry(this.tds.getUnitIndex());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20981 var plots = this.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20982 for (var i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20983 plots[i].pins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20984 plots[i].style = this.style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20985 for (var j = 0; j < this.tds.getSliceNumber(); j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20986 plots[i].pins.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20987 height : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20988 count : 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20989 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20990 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20991 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20992 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20993 var levels = Math.round( (this.tds.timeSlices.length-3)/2 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20994 if( GeoTemConfig.timeZoom ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20995 this.zoomSlider.setMaxAndLevels(levels,levels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20996 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20997 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20998 this.timeplot.repaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
20999 this.timeplot._resizeCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21000 // set maximum number of slider steps
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21001 var slices = this.tds.timeSlices.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21002 var numSlices = Math.floor(slices / this.canvas.width * this.canvas.height + 0.5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21003
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21004 this.initLabels([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21005 this.initOverview();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21006 this.gui.updateTimeQuantity(this.count);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21007
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21008 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21010 setTimeUnit : function(unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21011 this.clearTimeplot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21012 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21013 this.tds.setTimeUnit(unit);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21014 var plots = this.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21015 for (var i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21016 plots[i].pins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21017 plots[i].style = this.style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21018 for (var j = 0; j < this.tds.getSliceNumber(); j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21019 plots[i].pins.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21020 height : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21021 count : 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21022 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21023 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21024 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21025 this.initLabels([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21026 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21028 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21029 * initializes the timeplot for the Spatio Temporal Interface.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21030 * all elements (including their events) that are needed for user interaction are instantiated here, the slider element as well
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21031 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21032 initialize : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21033
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21034 this.status = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21035 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21036 this.paused = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21037 this.dataSources = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21038 this.plotInfos = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21039 this.eventSources = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21040 this.timeGeometry = new Timeplot.DefaultTimeGeometry({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21041 gridColor : "#000000",
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21042 axisLabelsPlacement : "top"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21043 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21044 this.style = 'graph';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21045 this.timeGeometry._hideLabels = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21046 this.timeGeometry._granularity = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21047 this.valueGeometry = new Timeplot.LogarithmicValueGeometry({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21048 min : 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21049 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21050 this.valueGeometry.actLinear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21052 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21053
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21054 this.timeplot = Timeplot.create(this.gui.timeplotDiv, this.plotInfos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21055 this.tds = new TimeDataSource(this.options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21056
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21057 this.canvas = this.timeplot.getCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21058
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21059 this.leftFlagPole = this.timeplot.putDiv("leftflagpole", "timeplot-dayflag-pole");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21060 this.rightFlagPole = this.timeplot.putDiv("rightflagpole", "timeplot-dayflag-pole");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21061 SimileAjax.Graphics.setOpacity(this.leftFlagPole, 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21062 SimileAjax.Graphics.setOpacity(this.rightFlagPole, 50);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21063
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21064 this.rangeBox = this.timeplot.putDiv("rangebox", "range-box");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21065 this.rangeBox.style.backgroundColor = plot.options.rangeBoxColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21066 this.rangeBox.style.border = plot.options.rangeBorder;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21067
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21068 this.leftHandle = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21069 this.rightHandle = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21070 this.gui.plotWindow.appendChild(this.leftHandle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21071 this.gui.plotWindow.appendChild(this.rightHandle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21072 this.leftHandle.title = GeoTemConfig.getString('leftHandle');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21073 this.rightHandle.title = GeoTemConfig.getString('rightHandle');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21074
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21075 this.leftHandle.style.backgroundImage = "url(" + GeoTemConfig.path + "leftHandle.png" + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21076 this.leftHandle.setAttribute('class', 'plotHandle plotHandleIcon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21077 this.rightHandle.style.backgroundImage = "url(" + GeoTemConfig.path + "rightHandle.png" + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21078 this.rightHandle.setAttribute('class', 'plotHandle plotHandleIcon');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21079
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21080 this.poles = this.timeplot.putDiv("poles", "pole");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21081 this.timeplot.placeDiv(this.poles, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21082 left : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21083 bottom : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21084 width : this.canvas.width,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21085 height : this.canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21086 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21087 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21088 this.poles.appendChild(document.createElement("canvas"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21089
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21090 this.filterBar = new FilterBar(this, this.gui.filterOptions);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21091
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21092 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21093
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21094 this.dragButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21095 this.dragButton.title = GeoTemConfig.getString('dragTimeRange');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21096 this.cancelButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21097 this.cancelButton.title = GeoTemConfig.getString('clearSelection');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21098 this.cancelButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21099 plot.deselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21100 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21101
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21102 this.toolbar = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21103 this.toolbar.setAttribute('class', 'plotToolbar');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21104 this.toolbar.style.borderTop = plot.options.rangeBorder;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21105 this.toolbar.style.textAlign = "center";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21106 this.gui.plotWindow.appendChild(this.toolbar);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21107
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21108 this.toolbarAbsoluteDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21109 this.toolbarAbsoluteDiv.setAttribute('class', 'absoluteToolbar');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21110 this.toolbar.appendChild(this.toolbarAbsoluteDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21112 this.dragButton.setAttribute('class', 'dragTimeRangeAlt');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21113 this.dragButton.style.backgroundImage = "url(" + GeoTemConfig.path + "drag.png" + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21114 // this.zoomButton.setAttribute('class','zoomRangeAlt');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21115 this.cancelButton.setAttribute('class', 'cancelRangeAlt');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21116 this.toolbarAbsoluteDiv.appendChild(this.dragButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21117 this.toolbarAbsoluteDiv.style.width = this.dragButton.offsetWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21118 // this.gui.plotWindow.appendChild(this.zoomButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21119 this.gui.plotWindow.appendChild(this.cancelButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21120
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21121 this.overview = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21122 this.overview.setAttribute('class', 'timeOverview');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21123 this.gui.plotWindow.appendChild(this.overview);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21124
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21125 var mousedown = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21126 this.shift = function(shift) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21127 if (!mousedown) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21128 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21129 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21130 if (plot.tds.setShift(shift)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21131 plot.redrawPlot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21132 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21133 setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21134 plot.shift(shift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21135 }, 200);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21136 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21137 var shiftPressed = function(shift) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21138 mousedown = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21139 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21140 mousedown = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21141 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21142 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21143 plot.shift(shift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21144 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21145
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21146 this.shiftLeft = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21147 this.shiftLeft.setAttribute('class', 'shiftLeft');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21148 this.gui.plotWindow.appendChild(this.shiftLeft);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21149 this.shiftLeft.onmousedown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21150 shiftPressed(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21151 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21152
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21153 this.shiftRight = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21154 this.shiftRight.setAttribute('class', 'shiftRight');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21155 this.gui.plotWindow.appendChild(this.shiftRight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21156 this.shiftRight.onmousedown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21157 shiftPressed(-1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21158 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21159
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21160 this.plotLabels = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21161 this.plotLabels.setAttribute('class', 'plotLabels');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21162 this.gui.plotWindow.appendChild(this.plotLabels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21163
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21164 this.initLabels(this.timeplot.regularGrid());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21165
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21166 //Finds the time corresponding to the position x on the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21167 var getCorrelatedTime = function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21168 if (x >= plot.canvas.width)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21169 x = plot.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21170 if (isNaN(x) || x < 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21171 x = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21172 var t = plot.timeGeometry.fromScreen(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21173 if (t == 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21174 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21175 return plot.dataSources[0].getClosestValidTime(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21176 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21177 //Finds the position corresponding to the time t on the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21178 var getCorrelatedPosition = function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21179 var x = plot.timeGeometry.toScreen(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21180 if (x >= plot.canvas.width)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21181 x = plot.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21182 if (isNaN(x) || x < 0)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21183 x = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21184 return x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21185 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21186 //Maps the 2 positions in the right order to left and right bound of the chosen timeRange
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21187 var mapPositions = function(pos1, pos2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21188 if (pos1 > pos2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21189 plot.leftFlagPos = pos2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21190 plot.rightFlagPos = pos1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21191 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21192 plot.leftFlagPos = pos1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21193 plot.rightFlagPos = pos2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21194 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21195 plot.leftFlagTime = plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.leftFlagPos));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21196 plot.rightFlagTime = plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.rightFlagPos));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21197 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21198 //Sets the divs corresponding to the actual chosen timeRange
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21199 var setRangeDivs = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21200 plot.leftFlagPole.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21201 plot.rightFlagPole.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21202 plot.rangeBox.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21203 plot.timeplot.placeDiv(plot.leftFlagPole, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21204 left : plot.leftFlagPos,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21205 bottom : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21206 height : plot.canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21207 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21208 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21209 plot.timeplot.placeDiv(plot.rightFlagPole, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21210 left : plot.rightFlagPos,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21211 bottom : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21212 height : plot.canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21213 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21214 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21215 var boxWidth = plot.rightFlagPos - plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21216 if (plot.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21217 plot.popupClickDiv.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21218 plot.timeplot.placeDiv(plot.popupClickDiv, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21219 left : plot.leftFlagPos,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21220 width : boxWidth + 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21221 height : plot.canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21222 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21223 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21224 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21225 plot.timeplot.placeDiv(plot.rangeBox, {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21226 left : plot.leftFlagPos,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21227 width : boxWidth + 1,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21228 height : plot.canvas.height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21229 display : "block"
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21230 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21231 var plots = plot.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21232 for ( i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21233 plots[i].fullOpacityPlot(plot.leftFlagTime, plot.rightFlagTime, plot.leftFlagPos, plot.rightFlagPos, GeoTemConfig.getColor(i));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21234 plots[i].opacityPlot.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21235 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21236 var unit = plot.tds.unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21237
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21238 var top = plot.gui.plotContainer.offsetTop;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21239 var left = plot.gui.plotContainer.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21240 var leftPos = plot.leftFlagPole.offsetLeft + plot.timeplot.getElement().offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21241 var rightPos = plot.rightFlagPole.offsetLeft + plot.timeplot.getElement().offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21242 var rW = rightPos - leftPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21243 var pW = plot.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21244 var pL = plot.timeplot.getElement().offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21245
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21246 var handleTop = top + Math.floor(plot.gui.timeplotDiv.offsetHeight / 2 - plot.leftHandle.offsetHeight / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21247 plot.leftHandle.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21248 plot.rightHandle.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21249 plot.leftHandle.style.left = (leftPos - plot.leftHandle.offsetWidth / 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21250 plot.rightHandle.style.left = (rightPos - plot.rightHandle.offsetWidth + 1 + plot.rightHandle.offsetWidth / 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21251 plot.leftHandle.style.top = handleTop + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21252 plot.rightHandle.style.top = handleTop + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21253 if (rightPos == leftPos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21254 plot.rightHandle.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21255 plot.leftHandle.style.backgroundImage = "url(" + GeoTemConfig.path + "mergedHandle.png" + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21256 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21257 plot.leftHandle.style.backgroundImage = "url(" + GeoTemConfig.path + "leftHandle.png" + ")";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21258 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21259 plot.cancelButton.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21260 plot.cancelButton.style.top = top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21261
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21262 if (rW > plot.cancelButton.offsetWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21263 plot.cancelButton.style.left = (left + rightPos - plot.cancelButton.offsetWidth) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21264 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21265 plot.cancelButton.style.left = (left + rightPos) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21267 var tW = plot.toolbarAbsoluteDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21268 if (rW >= tW) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21269 plot.toolbar.style.left = leftPos + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21270 plot.toolbar.style.width = (rW + 1) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21271 plot.toolbarAbsoluteDiv.style.left = ((rW - tW) / 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21272 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21273 plot.toolbar.style.left = (pL + plot.leftFlagPos * (pW - tW) / (pW - rW)) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21274 plot.toolbar.style.width = (tW + 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21275 plot.toolbarAbsoluteDiv.style.left = "0px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21276 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21277 plot.toolbar.style.top = (top + plot.timeplot.getElement().offsetHeight) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21278 plot.toolbar.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21279 plot.toolbarAbsoluteDiv.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21280
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21281 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21282 var getAbsoluteLeft = function(div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21283 var left = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21284 while (div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21285 left += div.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21286 div = div.offsetParent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21287 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21288 return left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21289 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21290 var timeplotLeft = getAbsoluteLeft(plot.timeplot.getElement());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21291
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21292 var checkPolesForStyle = function(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21293 if (plot.style == 'bars' && plot.leftFlagTime == plot.rightFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21294 var index = plot.tds.getSliceIndex(plot.leftFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21295 var time1 = plot.leftFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21296 var pos1 = plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21297 var time2, pos2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21298 if (index == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21299 time2 = plot.tds.getSliceTime(index + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21300 } else if (index == plot.tds.getSliceNumber() - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21301 time2 = plot.tds.getSliceTime(index - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21302 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21303 if (x < plot.leftFlagPos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21304 time2 = plot.tds.getSliceTime(index - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21305 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21306 time2 = plot.tds.getSliceTime(index + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21307 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21308 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21309 pos2 = plot.timeGeometry.toScreen(time2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21310 mapPositions(pos1, pos2, time1, time2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21312 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21313 var startX, startY, multiplier;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21315 // mousemove function that causes moving selection of objects and toolbar divs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21316 var moveToolbar = function(start, actual) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21317 var pixelShift = actual - start;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21318 if (plot.status == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21319 var newTime = getCorrelatedTime(startX + pixelShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21320 if (newTime == plot.mouseTempTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21321 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21322 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21323 plot.mouseTempTime = newTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21324 plot.mouseTempPos = plot.timeGeometry.toScreen(plot.mouseTempTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21325 mapPositions(plot.mouseDownPos, plot.mouseTempPos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21326 } else if (plot.status == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21327 pixelShift *= multiplier;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21328 var plotPos = actual - timeplotLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21329 if (plotPos <= plot.canvas.width / 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21330 var newTime = getCorrelatedTime(startX + pixelShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21331 if (newTime == plot.leftFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21332 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21333 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21334 plot.leftFlagTime = newTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21335 var diff = plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21336 plot.leftFlagPos = plot.timeGeometry.toScreen(plot.leftFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21337 diff -= plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21338 plot.rightFlagTime = getCorrelatedTime(plot.rightFlagPos - diff);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21339 plot.rightFlagPos = plot.timeGeometry.toScreen(plot.rightFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21340 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21341 var newTime = getCorrelatedTime(startY + pixelShift);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21342 if (newTime == plot.rightFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21343 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21344 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21345 plot.rightFlagTime = newTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21346 var diff = plot.rightFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21347 plot.rightFlagPos = plot.timeGeometry.toScreen(plot.rightFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21348 diff -= plot.rightFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21349 plot.leftFlagTime = getCorrelatedTime(plot.leftFlagPos - diff);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21350 plot.leftFlagPos = plot.timeGeometry.toScreen(plot.leftFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21351 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21352 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21353 checkPolesForStyle(actual - timeplotLeft);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21354 setRangeDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21355 plot.timeSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21356 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21357 // fakes user interaction mouse move
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21358 var playIt = function(start, actual, reset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21359 if (!plot.paused) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21360 var pixel = plot.canvas.width / (plot.tds.timeSlices.length - 1 ) / 5;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21361 var wait = 20 * pixel;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21362 if (reset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21363 actual = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21364 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21365 moveToolbar(start, actual);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21366 if (plot.rightFlagPos >= plot.canvas.width) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21367 reset = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21368 wait = 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21369 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21370 reset = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21371 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21372 setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21373 playIt(start, actual + pixel, reset)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21374 }, wait);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21375 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21376 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21377 var setMultiplier = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21378 var rangeWidth = plot.rightFlagPos - plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21379 var toolbarWidth = plot.toolbarAbsoluteDiv.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21380 var plotWidth = plot.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21381 if (rangeWidth < toolbarWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21382 multiplier = (plotWidth - rangeWidth) / (plotWidth - toolbarWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21383 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21384 multiplier = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21385 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21386 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21387 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21388 * starts the animation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21389 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21390 this.play = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21391 if (this.leftFlagPos == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21392 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21393 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21394 plot.paused = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21395 plot.gui.updateAnimationButtons(2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21396 plot.status = 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21397 setMultiplier();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21398 startX = plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21399 startY = plot.rightFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21400 var position = Math.round(plot.leftFlagPos);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21401 playIt(position, position + 1, false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21402 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21403 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21404 * stops the animation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21405 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21406 this.stop = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21407 plot.paused = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21408 plot.status = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21409 plot.gui.updateAnimationButtons(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21410 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21411 // triggers the mousemove function to move the range and toolbar
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21412 var toolbarEvent = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21413 var left = GeoTemConfig.getMousePosition(evt).left;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21414 document.onmousemove = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21415 moveToolbar(left, GeoTemConfig.getMousePosition(evt).left);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21416 if (plot.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21417 plot.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21418 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21419 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21420 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21421 var initializeLeft = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21422 plot.mouseDownTime = plot.rightFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21423 plot.mouseTempTime = plot.leftFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21424 plot.mouseDownPos = plot.timeGeometry.toScreen(plot.mouseDownTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21425 startX = plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21426 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21427 var initializeRight = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21428 plot.mouseDownTime = plot.leftFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21429 plot.mouseTempTime = plot.rightFlagTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21430 plot.mouseDownPos = plot.timeGeometry.toScreen(plot.mouseDownTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21431 startX = plot.rightFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21432 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21433 var initializeDrag = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21434 startX = plot.leftFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21435 startY = plot.rightFlagPos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21436 setMultiplier();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21437 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21438 var checkBorders = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21439 if (plot.style == 'bars' && plot.mouseUpTime == plot.mouseDownTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21440 var index = plot.tds.getSliceIndex(plot.mouseUpTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21441 if (index == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21442 plot.mouseUpTime = plot.tds.getSliceTime(index + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21443 } else if (index == plot.tds.getSliceNumber() - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21444 plot.mouseUpTime = plot.tds.getSliceTime(index - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21445 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21446 if (plot.x < plot.leftFlagPos) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21447 plot.mouseUpTime = plot.tds.getSliceTime(index - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21448 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21449 plot.mouseUpTime = plot.tds.getSliceTime(index + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21450 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21451 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21452 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21453 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21454 // handles mousedown on left handle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21455 this.leftHandle.onmousedown = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21456 if (plot.status != 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21457
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21458 initializeLeft();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21459 plot.status = 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21460 toolbarEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21461 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21462 document.onmousemove = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21463 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21464 plot.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21465 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21466 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21467 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21468 // handles mousedown on right handle
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21469 this.rightHandle.onmousedown = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21470 if (plot.status != 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21471 initializeRight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21472 plot.status = 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21473 toolbarEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21474 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21475 document.onmousemove = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21476 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21477 plot.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21478 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21479 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21480 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21481 // handles mousedown on drag button
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21482 this.dragButton.onmousedown = function(evt) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21483 if (plot.status != 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21484 plot.status = 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21485 initializeDrag();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21486 toolbarEvent(evt);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21487 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21488 document.onmousemove = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21489 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21490 plot.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21491 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21492 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21493 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21494 // handles mousedown-Event on timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21495 var mouseDownHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21496 if (plot.dataSources.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21497
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21498 plot.x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21499 if (plot.status == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21500 var time = getCorrelatedTime(plot.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21501 if (plot.leftFlagPos != null && plot.popup && time >= plot.leftFlagTime && time <= plot.rightFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21502 var x = plot.leftFlagPos + (plot.rightFlagPos - plot.leftFlagPos) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21503 var elements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21504 for (var i = 0; i < plot.dataSources.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21505 elements.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21506 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21507 for (var i = 0; i < plot.selectedObjects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21508 if (plot.selectedObjects[i].value == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21509 for (var j = 0; j < plot.selectedObjects[i].objects.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21510 elements[j] = elements[j].concat(plot.selectedObjects[i].objects[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21511 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21512 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21513 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21514 var labels = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21515 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21516 if (elements[i].length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21517 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21518 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21519 var c = GeoTemConfig.getColor(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21520 var color = 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21521 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21522 div.setAttribute('class', 'tagCloudItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21523 div.style.color = color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21524 var label = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21525 div : div,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21526 elements : elements[i]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21527 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21528 var weight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21529 for (j in elements[i] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21530 weight += elements[i][j].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21531 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21532 var fs = 2 * weight / 1000;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21533 if (fs > 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21534 fs = 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21536 div.style.fontSize = (1 + fs) + "em";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21537 div.style.textShadow = "0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em " + c.hex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21538 if (weight == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21539 div.innerHTML = weight + " object";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21540 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21541 div.innerHTML = weight + " objects";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21542 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21543 var appendMouseFunctions = function(label, div, color) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21544 div.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21545 plot.popup.showLabelContent(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21546 div.style.textShadow = "0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em " + color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21547 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21548 div.onmouseover = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21549 div.style.textShadow = "0 -1px " + color + ", 1px 0 " + color + ", 0 1px " + color + ", -1px 0 " + color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21550 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21551 div.onmouseout = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21552 div.style.textShadow = "0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em " + color;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21553 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21554 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21555 appendMouseFunctions(label, div, c.hex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21556 labels.push(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21557 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21558 if (labels.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21559 plot.popup.createPopup(x + 20, 0, labels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21560 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21561 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21562 plot.deselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21563 plot.status = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21564 plot.mouseDownTime = time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21565 plot.mouseTempTime = plot.mouseDownTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21566 plot.mouseDownPos = plot.timeGeometry.toScreen(plot.mouseDownTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21567 mapPositions(plot.mouseDownPos, plot.mouseDownPos, plot.mouseDownTime, plot.mouseDownTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21568 // handles mouseup-Event on timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21569 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21570 if (plot.status == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21571 plot.mouseUpTime = plot.mouseTempTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21572 plot.mouseUpPos = plot.timeGeometry.toScreen(plot.mouseUpTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21573 mapPositions(plot.mouseDownPos, plot.mouseUpPos, plot.mouseDownTime, plot.mouseUpTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21574 checkPolesForStyle(plot.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21575 setRangeDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21576 plot.timeSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21577 plot.gui.updateAnimationButtons(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21578 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21579 plot.status = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21580 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21581 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21582 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21583 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21584 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21585 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21586 // handles mousemove-Event on timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21587 var mouseMoveHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21588 if (plot.dataSources.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21589 plot.x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21590 if (plot.status == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21591 plot.mouseTempTime = getCorrelatedTime(plot.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21592 plot.mouseTempPos = plot.timeGeometry.toScreen(plot.mouseTempTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21593 mapPositions(plot.mouseDownPos, plot.mouseTempPos, plot.mouseDownTime, plot.mouseTempTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21594 checkPolesForStyle(plot.x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21595 setRangeDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21596 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21597 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21598 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21599 // handles mouseout-Event on timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21600 var mouseOutHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21601 if (plot.dataSources.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21602 var x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21603 var y = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21604 if (x > plot.canvas.width - 2 || isNaN(x) || x < 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21605 plot.timeHighlight(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21606 plot.highlightedSlice = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21607 } else if (y > plot.canvas.height - 2 || isNaN(y) || y < 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21608 plot.timeHighlight(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21609 plot.highlightedSlice = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21610 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21611 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21612 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21613 // handles mouse(h)over-Event on timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21614 var mouseHoverHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21615 if (plot.dataSources.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21616 var x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21617 var time = getCorrelatedTime(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21618 if (time == undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21619 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21620 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21621 var highlightSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21622 var slices = plot.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21623 var index = plot.tds.getSliceIndex(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21624 if (plot.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21625 highlightSlice = slices[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21626 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21627 if (plot.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21628 var pos = plot.timeGeometry.toScreen(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21629 if (x < pos && index > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21630 highlightSlice = slices[index - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21631 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21632 highlightSlice = slices[index];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21633 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21634 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21635 if (plot.highlightedSlice == undefined || plot.highlightedSlice != highlightSlice) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21636 plot.highlightedSlice = highlightSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21637 plot.timeHighlight(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21638 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21639 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21640 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21641
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21642 this.redrawPlot = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21643 plot.clearTimeplot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21644 plot.tds.reset(this.timeGeometry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21645 plot.timeplot._prepareCanvas();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21646 plot.timeplot.repaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21647 if (plot.leftFlagPos != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21648 plot.leftFlagPos = getCorrelatedPosition(plot.leftFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21649 plot.rightFlagPos = getCorrelatedPosition(plot.rightFlagTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21650 setRangeDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21651 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21652 plot.displayOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21653 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21654 plot.initLabels([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21655 plot.updateOverview();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21656 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21657
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21658 this.resetOpacityPlots = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21659 var plots = plot.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21660 for ( var i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21661 plots[i]._opacityCanvas.width = this.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21662 plots[i]._opacityCanvas.height = this.canvas.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21663 if( plot.leftFlagTime != null ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21664 plots[i].fullOpacityPlot(plot.leftFlagTime, plot.rightFlagTime, plot.leftFlagPos, plot.rightFlagPos, GeoTemConfig.getColor(i));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21665 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21666 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21667 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21668
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21669 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21670 * handles zoom of the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21671 * @param {int} delta the change of zoom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21672 * @param {Date} time a time that corresponds to a slice, that was clicked
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21673 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21674 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21675 this.zoom = function(delta,time){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21676 if( this.eventSources.length == 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21677 if( GeoTemConfig.timeZoom ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21678 this.zoomSlider.setValue(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21679 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21680 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21681 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21682 if( time == null ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21683 time = getCorrelatedTime(this.canvas.width/2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21685 if( this.tds.setZoom(delta,time,this.leftFlagTime,this.rightFlagTime) ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21686 this.redrawPlot();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21687 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21688 if( GeoTemConfig.timeZoom ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21689 this.zoomSlider.setValue(this.tds.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21690 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21691 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21692 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21693 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21694
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21695 // handles mousewheel event on the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21696 var mouseWheelHandler = function(elmt, evt, target) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21697 if (evt.preventDefault) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21698 evt.preventDefault();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21699 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21700 if (plot.dataSources.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21701 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21702 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21703 var delta = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21704 if (!evt)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21705 evt = window.event;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21706 if (evt.wheelDelta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21707 delta = evt.wheelDelta / 120;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21708 if (window.opera)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21709 delta = -delta;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21710 } else if (evt.detail) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21711 delta = -evt.detail / 3;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21712 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21713 if (delta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21714 var x = Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt, plot.canvas).x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21715 var time = getCorrelatedTime(x);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21716 plot.zoom(delta, time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21717 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21718 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21719 var timeplotElement = this.timeplot.getElement();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21720 SimileAjax.DOM.registerEvent(timeplotElement, "mousedown", mouseDownHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21721 SimileAjax.DOM.registerEvent(timeplotElement, "mousemove", mouseMoveHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21722 SimileAjax.DOM.registerEvent(timeplotElement, "mousemove", mouseHoverHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21723 SimileAjax.DOM.registerEvent(timeplotElement, "mouseout", mouseOutHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21724 if (GeoTemConfig.mouseWheelZoom) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21725 //SimileAjax.DOM.registerEvent(timeplotElement, "mousewheel", mouseWheelHandler);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21726 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21727
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21728 this.gui.setHeight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21729
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21730 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21731
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21732 resetOverlay : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21733 this.poles.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21734 var plots = this.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21735 for (var i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21736 for (var j = 0; j < plots[i].pins.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21737 plots[i].pins[j] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21738 height : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21739 count : 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21740 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21742 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21743 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21744
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21745 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21746 * resets the timeplot to non selection status
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21747 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21748 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21749
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21750 this.leftFlagPole.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21751 this.rightFlagPole.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21752 this.rangeBox.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21753 this.leftHandle.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21754 this.rightHandle.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21755 this.toolbar.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21756 this.toolbarAbsoluteDiv.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21757 this.cancelButton.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21758
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21759 var plots = this.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21760 for (var i = 0; i < plots.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21761 plots[i].opacityPlot.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21762 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21763 this.resetOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21764 this.filterBar.reset(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21765
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21766 var slices = this.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21767 if (slices != undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21768 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21769 slices[i].reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21770 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21771 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21772
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21773 this.status = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21774 this.stop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21775 this.gui.updateAnimationButtons(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21777 this.leftFlagPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21778 this.leftFlagTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21779 this.rightFlagPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21780 this.rightFlagTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21781
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21782 this.mouseDownTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21783 this.mouseUpTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21784 this.mouseTempTime = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21785
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21786 this.mouseDownPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21787 this.mouseUpPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21788 this.mouseTempPos = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21789
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21790 if (this.popup) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21791 this.popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21792 this.popupClickDiv.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21793 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21794
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21795 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21796
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21797 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21798 * sets a pole on the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21799 * @param {Date} time the time of the specific timeslice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21800 * @param {int[]} the number of selected elements per dataset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21801 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21802 displayOverlay : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21803 this.poles.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21804 var cv = this.poles.getElementsByTagName("canvas")[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21805 cv.width = this.canvas.width;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21806 cv.height = this.canvas.height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21807 if (!cv.getContext && G_vmlCanvasManager) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21808 cv = G_vmlCanvasManager.initElement(cv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21809 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21810 var ctx = cv.getContext('2d');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21811 ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21812 var plots = this.timeplot._plots;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21813 var slices = this.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21814 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21815 if (this.style == 'bars' && i + 1 == slices.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21816 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21817 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21818 if (slices[i].overlay() == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21819 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21820 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21821 var stacks = slices[i].stacks;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21822 var time = slices[i].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21823 var pos;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21824 if (this.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21825 pos = this.timeGeometry.toScreen(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21826 } else if (this.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21827 var x1 = this.timeGeometry.toScreen(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21828 var x2 = this.timeGeometry.toScreen(slices[i + 1].date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21829 pos = (x1 + x2 ) / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21830 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21831 var heights = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21832 var h = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21833 for (var j = 0; j < stacks.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21834 var data = plots[j]._dataSource.getData();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21835 for (var k = 0; k < data.times.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21836 if (data.times[k].getTime() == time.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21837 var height = plots[j]._valueGeometry.toScreen(plots[j]._dataSource.getData().values[k]) * stacks[j].overlay / stacks[j].value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21838 heights.push(height);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21839 plots[j].pins[i] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21840 height : height,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21841 count : stacks[j].overlay
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21842 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21843 if (height > h) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21844 h = height;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21846 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21847 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21848 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21849 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21850 ctx.fillStyle = "rgb(102,102,102)";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21851 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21852 ctx.rect(pos - 1, this.canvas.height - h, 2, h);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21853 ctx.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21854 for (var j = 0; j < heights.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21855 if (heights[j] > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21856 var color = GeoTemConfig.getColor(j);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21857 ctx.fillStyle = "rgba(" + color.r1 + "," + color.g1 + "," + color.b1 + ",0.6)";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21858 ctx.beginPath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21859 ctx.arc(pos, this.canvas.height - heights[j], 2.5, 0, Math.PI * 2, true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21860 ctx.closePath();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21861 ctx.fill();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21864 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21865 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21866
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21867 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21868 * updates the timeplot by displaying place poles, after a selection had been executed in another widget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21869 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21870 highlightChanged : function(timeObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21871 this.resetOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21872 if (this.selection.valid()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21873 if (!this.selection.equal(this)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21874 this.tds.setOverlay(GeoTemConfig.mergeObjects(timeObjects, this.selection.getObjects(this)));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21875 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21876 this.tds.setOverlay(timeObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21877 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21878 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21879 this.tds.setOverlay(timeObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21880 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21881 this.displayOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21882 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21883
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21884 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21885 * updates the timeplot by displaying place poles, after a selection had been executed in another widget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21886 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21887 selectionChanged : function(selection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21888 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21889 this.selection = selection;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21890 this.tds.setOverlay(selection.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21891 this.displayOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21892 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21893
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21894 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21895 * returns the approximate left position of a slice inside the overview representation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21896 * @param {Date} time time of the slice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21897 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21898 getOverviewLeft : function(time) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21899 var w = this.overview.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21900 var s = this.tds.earliest().getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21901 var e = this.tds.latest().getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21902 var t = time.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21903 return Math.round(w * (t - s) / (e - s));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21904 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21905
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21906 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21907 * visualizes the overview div (shows viewable part of zoomed timeplot)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21908 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21909 initOverview : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21910 var labels = this.timeGeometry._grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21911 if (labels.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21912 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21913 setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21914 plot.initOverview();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21915 }, 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21916 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21917 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21918
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21919 this.overview.style.width = this.canvas.width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21920 var left = this.gui.timeplotDiv.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21921 this.overview.innerHTML = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21922 this.overview.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21923
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21924 this.overviewRange = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21925 this.overviewRange.setAttribute('class', 'overviewRange');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21926 this.overview.appendChild(this.overviewRange);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21927
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21928 for (var i = 0; i < labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21929 var label = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21930 label.setAttribute('class', 'overviewLabel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21931 label.innerHTML = labels[i].label;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21932 label.style.left = Math.floor(labels[i].x) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21933 this.overview.appendChild(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21934 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21935
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21936 this.updateOverview();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21937 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21938
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21939 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21940 * visualizes the labels of the timeplot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21941 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21942 initLabels : function(labels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21943 if (labels.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21944 labels = this.timeGeometry._grid;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21945 if (labels.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21946 var plot = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21947 setTimeout(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21948 plot.initLabels([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21949 }, 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21950 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21951 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21952 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21953 this.plotLabels.style.width = this.canvas.width + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21954 var left = this.gui.timeplotDiv.offsetLeft;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21955 this.plotLabels.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21956 this.plotLabels.innerHTML = "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21957 for (var i = 0; i < labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21958 var label = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21959 label.setAttribute('class', 'plotLabel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21960 label.innerHTML = labels[i].label;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21961 label.style.left = Math.floor(labels[i].x) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21962 this.plotLabels.appendChild(label);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21963 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21964 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21965
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21966 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21967 * updates the overview div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21968 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21969 updateOverview : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21970 if (this.tds.getZoom() > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21971 this.plotLabels.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21972 this.timeGeometry._hideLabels = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21973 this.overview.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21974 this.shiftLeft.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21975 this.shiftRight.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21976 var left = this.getOverviewLeft(this.tds.timeSlices[this.tds.leftSlice].date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21977 var right = this.getOverviewLeft(this.tds.timeSlices[this.tds.rightSlice].date);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21978 this.overviewRange.style.left = left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21979 this.overviewRange.style.width = (right - left) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21980 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21981 this.timeGeometry._hideLabels = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21982 this.plotLabels.style.visibility = "visible";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21983 this.overview.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21984 this.shiftLeft.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21985 this.shiftRight.style.visibility = "hidden";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21986 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21987 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21988
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21989 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21990 * returns the time slices which are created by the extended data source
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21991 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21992 getSlices : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21993 return this.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21994 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21995
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21996 timeSelection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21997 var slices = this.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21998 var ls, rs;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
21999 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22000 if (slices[i].date.getTime() == this.leftFlagTime.getTime())
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22001 ls = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22002 if (slices[i].date.getTime() == this.rightFlagTime.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22003 if (this.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22004 rs = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22005 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22006 if (this.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22007 rs = i - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22008 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22009 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22010 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22011 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22012 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22013 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22014 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22015 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22016 if (i >= ls && i <= rs) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22017 for (var j in slices[i].stacks ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22018 selectedObjects[j] = selectedObjects[j].concat(slices[i].stacks[j].elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22019 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22020 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22021 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22022 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22023 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22024 this.filterBar.reset(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22025 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22026
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22027 deselection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22028 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22029 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22030 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22031 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22032
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22033 filtering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22034 for (var i = 0; i < this.datasets.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22035 this.datasets[i].objects = this.selection.objects[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22036 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22037 this.core.triggerRefining(this.datasets);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22038 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22039
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22040 inverseFiltering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22041 var slices = this.tds.timeSlices;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22042 var ls, rs;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22043 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22044 if (slices[i].date.getTime() == this.leftFlagTime.getTime())
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22045 ls = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22046 if (slices[i].date.getTime() == this.rightFlagTime.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22047 if (this.style == 'graph') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22048 rs = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22049 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22050 if (this.style == 'bars') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22051 rs = i - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22052 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22053 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22054 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22055 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22056 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22057 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22058 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22059 for (var i = 0; i < slices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22060 if (i >= ls && i <= rs) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22061 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22062 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22063 for (var j in slices[i].stacks ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22064 selectedObjects[j] = selectedObjects[j].concat(slices[i].stacks[j].elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22065 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22066 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22067 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22068 this.filtering();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22069 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22070
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22071 timeHighlight : function(undo) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22072 if (this.status == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22073 var s = this.highlightedSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22074 var timeObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22075 for (var i = 0; i < this.tds.size(); i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22076 timeObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22077 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22078 var add = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22079 if (this.leftFlagTime != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22080 if (this.style == 'graph' && s.date >= this.leftFlagTime && s.date <= this.rightFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22081 add = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22082 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22083 if (this.style == 'bars' && s.date >= this.leftFlagTime && s.date < this.rightFlagTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22084 add = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22085 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22086 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22087 if (!undo && add) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22088 for (var i in s.stacks ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22089 timeObjects[i] = timeObjects[i].concat(s.stacks[i].elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22090 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22091 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22092 this.core.triggerHighlight(timeObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22093 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22094 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22095
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22096 timeRefining : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22097 this.core.triggerRefining(this.selection.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22098 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22099
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22100 setStyle : function(style) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22101 this.style = style;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22102 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22103
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22104 drawLinearPlot : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22105 if ( typeof this.valueGeometry != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22106 this.valueGeometry.actLinear();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22107 this.timeplot.repaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22108 this.resetOpacityPlots();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22109 this.displayOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22110 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22111 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22112
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22113 drawLogarithmicPlot : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22114 if ( typeof this.valueGeometry != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22115 this.valueGeometry.actLogarithmic();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22116 this.timeplot.repaint();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22117 this.resetOpacityPlots();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22118 this.displayOverlay();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22120 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22121 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22122 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22123 * TableConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22124 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22125 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22126 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22127 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22128 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22129 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22130 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22131 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22132 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22133 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22134 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22135 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22136 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22137 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22138 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22139 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22140 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22141 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22142
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22143 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22144 * @class TableConfig
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22145 * Table Configuration File
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22146 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22147 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22148 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22149 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22150 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22151 function TableConfig(options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22152
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22153 this.options = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22154 tableWidth : false, // false or desired width css definition for the table
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22155 tableHeight : false, // false or desired height css definition for the table
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22156 validResultsPerPage : [10, 20, 50, 100], // valid number of elements per page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22157 initialResultsPerPage : 10, // initial number of elements per page
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22158 tableSorting : true, // true, if sorting of columns should be possible
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22159 tableContentOffset : 250, // maximum display number of characters in a table cell
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22160 tableSelectPage : true, // selection of complete table pages
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22161 tableSelectAll : false, // selection of complete tables
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22162 tableShowSelected : true, // show selected objects only option
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22163 unselectedCellColor : '#EEE' // color for an unselected row/tab
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22164 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22165 if ( typeof options != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22166 $.extend(this.options, options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22167 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22168
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22169 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22170 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22171 * TableGui.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22172 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22173 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22174 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22175 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22176 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22177 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22178 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22179 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22180 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22181 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22182 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22183 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22184 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22185 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22186 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22187 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22188 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22189 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22190
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22191 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22192 * @class TableGui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22193 * Table GUI Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22194 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22195 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22196 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22197 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22198 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22199 * @param {TableWidget} parent table widget object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22200 * @param {HTML object} div parent div to append the table gui
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22201 * @param {JSON} options table configuration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22202 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22203 function TableGui(table, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22204
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22205 this.tableContainer = div;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22206 if (options.tableWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22207 this.tableContainer.style.width = options.tableWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22208 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22209 if (options.tableHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22210 this.tableContainer.style.height = options.tableHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22211 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22212 this.tableContainer.style.position = 'relative';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22213
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22214 this.tabs = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22215 this.tabs.setAttribute('class', 'tableTabs');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22216 div.appendChild(this.tabs);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22217
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22218 this.input = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22219 this.input.setAttribute('class', 'tableInput');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22220 div.appendChild(this.input);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22222 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22223 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22224 * TableWidget.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22225 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22226 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22227 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22228 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22229 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22230 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22231 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22232 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22233 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22234 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22235 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22236 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22237 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22238 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22239 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22240 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22241 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22242 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22243
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22244 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22245 * @class TableWidget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22246 * TableWidget Implementation
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22247 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22248 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22249 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22250 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22251 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22252 * @param {TableWrapper} core wrapper for interaction to other widgets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22253 * @param {HTML object} div parent div to append the table widget div
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22254 * @param {JSON} options user specified configuration that overwrites options in TableConfig.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22255 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22256 function TableWidget(core, div, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22257
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22258 this.core = core;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22259 this.core.setWidget(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22260 this.tables = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22261 this.tableTabs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22262 this.tableElements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22263 this.tableHash = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22264
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22265 this.options = (new TableConfig(options)).options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22266 this.gui = new TableGui(this, div, this.options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22267 this.filterBar = new FilterBar(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22268
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22269 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22270
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22271 TableWidget.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22272
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22273 initWidget : function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22274
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22275 $(this.gui.tabs).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22276 $(this.gui.input).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22277 this.activeTable = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22278 this.tables = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22279 this.tableTabs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22280 this.tableElements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22281 this.tableHash = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22282 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22283 this.filterBar.reset(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22285 var tableWidget = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22286 var addTab = function(name, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22287 var tableTab = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22288 tableTab.setAttribute('class', 'tableTab');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22289 tableTab.style.backgroundColor = tableWidget.options.unselectedCellColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22290 tableTab.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22291 tableWidget.selectTable(index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22292 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22293 tableTab.innerHTML = name;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22294 return tableTab;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22295 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22296 for (var i in data ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22297 this.tableHash.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22298 var tableTab = addTab(data[i].label, i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22299 this.gui.tabs.appendChild(tableTab);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22300 this.tableTabs.push(tableTab);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22301 var elements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22302 for (var j in data[i].objects ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22303 elements.push(new TableElement(data[i].objects[j]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22304 this.tableHash[i][data[i].objects[j].index] = elements[elements.length - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22305 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22306 var table = new Table(elements, this, i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22307 this.tables.push(table);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22308 this.tableElements.push(elements);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22309 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22310
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22311 if (data.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22312 this.selectTable(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22313 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22314
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22315 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22316
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22317 getHeight : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22318 if (this.options.tableHeight) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22319 return this.gui.tableContainer.offsetHeight - this.gui.tabs.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22320 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22321 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22322 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22323
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22324 selectTable : function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22325
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22326 if (this.activeTable != index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22327 if ( typeof this.activeTable != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22328 this.tables[this.activeTable].hide();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22329 this.tableTabs[this.activeTable].style.backgroundColor = this.options.unselectedCellColor;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22330 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22331 this.activeTable = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22332 this.tables[this.activeTable].show();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22333 var c = GeoTemConfig.getColor(this.activeTable);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22334 this.tableTabs[this.activeTable].style.backgroundColor = 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22335 this.core.triggerRise(index);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22336 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22337
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22338 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22339
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22340 highlightChanged : function(objects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22341 if( this.tables.length > 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22342 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22343 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22344 for (var i = 0; i < this.tableElements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22345 for (var j = 0; j < this.tableElements[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22346 this.tableElements[i][j].highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22347 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22348 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22349 for (var i = 0; i < objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22350 for (var j = 0; j < objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22351 this.tableHash[i][objects[i][j].index].highlighted = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22352 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22353 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22354 this.tables[this.activeTable].update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22355 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22356
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22357 selectionChanged : function(selection) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22358 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22359 if( this.tables.length == 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22360 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22361 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22362 this.selection = selection;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22363 for (var i = 0; i < this.tableElements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22364 for (var j = 0; j < this.tableElements[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22365 this.tableElements[i][j].selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22366 this.tableElements[i][j].highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22367 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22368 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22369 var objects = selection.getObjects(this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22370 for (var i = 0; i < objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22371 for (var j = 0; j < objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22372 this.tableHash[i][objects[i][j].index].selected = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22373 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22374 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22375 this.tables[this.activeTable].reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22376 this.tables[this.activeTable].update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22377 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22378
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22379 triggerHighlight : function(item) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22380 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22381 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22382 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22383 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22384 if ( typeof item != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22385 selectedObjects[this.activeTable].push(item);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22386 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22387 this.core.triggerHighlight(selectedObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22388 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22389
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22390 tableSelection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22391 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22392 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22393 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22394 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22395 var valid = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22396 for (var i = 0; i < this.tableElements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22397 for (var j = 0; j < this.tableElements[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22398 var e = this.tableElements[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22399 if (e.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22400 selectedObjects[i].push(e.object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22401 valid = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22402 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22403 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22404 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22405 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22406 if (valid) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22407 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22408 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22409 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22410 this.filterBar.reset(true);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22411 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22412
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22413 deselection : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22414 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22415 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22416 this.core.triggerSelection(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22417 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22418
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22419 filtering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22420 this.core.triggerRefining(this.selection.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22421 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22422
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22423 inverseFiltering : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22424 var selectedObjects = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22425 for (var i = 0; i < GeoTemConfig.datasets; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22426 selectedObjects.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22428 var valid = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22429 for (var i = 0; i < this.tableElements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22430 for (var j = 0; j < this.tableElements[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22431 var e = this.tableElements[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22432 if (!e.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22433 selectedObjects[i].push(e.object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22434 valid = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22435 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22436 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22437 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22438 this.selection = new Selection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22439 if (valid) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22440 this.selection = new Selection(selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22441 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22442 this.filtering();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22443 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22444
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22445 triggerRefining : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22446 this.core.triggerRefining(this.selection.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22447 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22448
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22449 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22450 this.filterBar.reset(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22451 if( this.tables.length > 0 ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22452 this.tables[this.activeTable].resetElements();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22453 this.tables[this.activeTable].reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22454 this.tables[this.activeTable].update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22455 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22456 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22458 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22459 * Table.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22460 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22461 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22462 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22463 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22464 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22465 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22466 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22467 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22468 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22469 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22470 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22471 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22472 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22473 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22474 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22475 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22476 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22477 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22479 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22480 * @class Table
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22481 * Implementation for a single table
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22482 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22483 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22484 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22485 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22486 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22487 * @param {Array} elements list of data items
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22488 * @param {HTML object} parent div to append the table
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22489 * @param {int} id dataset index
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22490 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22491 function Table(elements, parent, id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22492
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22493 this.elements = elements;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22494 this.showElementsLength = elements.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22495 this.parent = parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22496 this.id = id;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22497 this.options = parent.options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22498
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22499 this.validResultsPerPage = [10, 20, 50, 100];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22500 this.keyHeaderList = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22501 this.initialize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22502
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22503 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22504
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22505 Table.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22507 initToolbar : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22508
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22509 var table = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22510
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22511 this.toolbar = document.createElement("table");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22512 this.toolbar.setAttribute('class', 'ddbToolbar');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22513 this.toolbar.style.overflow = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22514 this.tableDiv.appendChild(this.toolbar);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22515
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22516 var navigation = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22517 this.toolbar.appendChild(navigation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22518
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22519 var selectors = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22520 navigation.appendChild(selectors);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22521
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22522 if (table.options.tableSelectPage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22523 var selectPageItems = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22524 this.selectPage = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22525 this.selectPage.setAttribute('class', 'smallButton selectPage');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22526 this.selectPage.title = GeoTemConfig.getString('selectTablePageItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22527 selectors.appendChild(this.selectPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22528 this.selectPage.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22529 selectPageItems = !selectPageItems;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22530 if (selectPageItems) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22531 var items = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22532 for (var i = table.first; i < table.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22533 table.elements[i].selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22534 items++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22535 if (items == table.resultsPerPage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22536 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22538 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22539 table.selectPage.setAttribute('class', 'smallButton selectPage');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22540 table.selectPage.title = GeoTemConfig.getString('selectTablePageItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22541 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22542 var items = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22543 for (var i = table.first; i < table.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22544 table.elements[i].selected = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22545 items++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22546 if (items == table.resultsPerPage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22547 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22548 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22549 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22550 table.selectPage.setAttribute('class', 'smallButton deselectPage');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22551 table.selectPage.title = GeoTemConfig.getString('deselectTablePageItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22552 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22553 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22554 table.parent.tableSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22556 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22557
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22558 if (table.options.tableSelectAll) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22559 var selectAllItems = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22560 this.selectAll = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22561 this.selectAll.setAttribute('class', 'smallButton selectAll');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22562 table.selectAll.title = GeoTemConfig.getString('selectAllTableItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22563 selectors.appendChild(this.selectAll);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22564 this.selectAll.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22565 selectAllItems = !selectAllItems;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22566 if (selectAllItems) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22567 for (var i = 0; i < table.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22568 table.elements[i].selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22569 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22570 table.selectAll.setAttribute('class', 'smallButton selectAll');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22571 table.selectAll.title = GeoTemConfig.getString('selectAllTableItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22572 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22573 for (var i = 0; i < table.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22574 table.elements[i].selected = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22575 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22576 table.selectAll.setAttribute('class', 'smallButton deselectAll');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22577 table.selectAll.title = GeoTemConfig.getString('deselectAllTableItemsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22579 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22580 table.parent.tableSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22581 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22582 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22584 this.showSelectedItems = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22585 if (table.options.tableShowSelected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22586 this.showSelected = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22587 this.showSelected.setAttribute('class', 'smallButton showSelected');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22588 table.showSelected.title = GeoTemConfig.getString('showSelectedHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22589 selectors.appendChild(this.showSelected);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22590 this.showSelected.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22591 table.showSelectedItems = !table.showSelectedItems;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22592 if (table.showSelectedItems) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22593 table.showElementsLength = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22594 for (var i = 0; i < table.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22595 if (table.elements[i].selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22596 table.showElementsLength++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22597 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22598 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22599 table.showSelected.setAttribute('class', 'smallButton showAll');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22600 // table.selectAll.title = GeoTemConfig.getString('showAllElementsHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22601 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22602 table.showElementsLength = table.elements.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22603 table.showSelected.setAttribute('class', 'smallButton showSelected');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22604 // table.selectAll.title = GeoTemConfig.getString('showSelectedHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22605 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22606 table.updateIndices(table.resultsPerPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22607 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22608 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22609 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22610 this.selectors = selectors;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22611
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22612 // selectors.style.width = (this.filter.offsetWidth + this.selectAll.offsetWidth + this.selectPage.offsetWidth)+"px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22613
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22614 var results = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22615 navigation.appendChild(results);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22616
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22617 var pagination = document.createElement("td");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22618 navigation.appendChild(pagination);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22619
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22620 this.resultsInfo = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22621 this.resultsInfo.setAttribute('class', 'resultsInfo');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22622 results.appendChild(this.resultsInfo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22623
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22624 this.firstPage = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22625 this.firstPage.setAttribute('class', 'paginationButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22626 this.firstPage.title = GeoTemConfig.getString('paginationFirsPageHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22627
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22628 pagination.appendChild(this.firstPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22629 this.firstPage.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22630 if (table.page != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22631 table.page = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22632 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22633 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22634 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22635
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22636 this.previousPage = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22637 this.previousPage.setAttribute('class', 'paginationButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22638 this.previousPage.title = GeoTemConfig.getString('paginationPreviousPageHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22639 pagination.appendChild(this.previousPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22640 this.previousPage.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22641 if (table.page > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22642 table.page--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22643 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22644 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22645 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22646
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22647 this.pageInfo = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22648 this.pageInfo.setAttribute('class', 'pageInfo');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22649 pagination.appendChild(this.pageInfo);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22651 this.nextPage = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22652 this.nextPage.setAttribute('class', 'paginationButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22653 this.nextPage.title = GeoTemConfig.getString('paginationNextPageHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22654 pagination.appendChild(this.nextPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22655 this.nextPage.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22656 if (table.page < table.pages - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22657 table.page++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22658 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22659 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22660 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22661
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22662 this.lastPage = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22663 this.lastPage.setAttribute('class', 'paginationButton');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22664 this.lastPage.title = GeoTemConfig.getString('paginationLastPageHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22665 pagination.appendChild(this.lastPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22666 this.lastPage.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22667 if (table.page != table.pages - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22668 table.page = table.pages - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22669 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22670 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22672
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22673 this.resultsDropdown = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22674 this.resultsDropdown.setAttribute('class', 'resultsDropdown');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22675 pagination.appendChild(this.resultsDropdown);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22676 var itemNumbers = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22677 var addItemNumber = function(count, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22678 var setItemNumber = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22679 table.updateIndices(count);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22680 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22681 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22682 itemNumbers.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22683 name : count,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22684 onclick : setItemNumber
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22685 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22686 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22687 for (var i = 0; i < table.options.validResultsPerPage.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22688 addItemNumber(table.options.validResultsPerPage[i], i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22689 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22690 var dropdown = new Dropdown(this.resultsDropdown, itemNumbers, 'selectMapType');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22691 for (var i = 0; i < table.options.validResultsPerPage.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22692 if (table.options.initialResultsPerPage == table.options.validResultsPerPage[i]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22693 dropdown.setEntry(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22694 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22695 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22696 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22697 dropdown.div.title = GeoTemConfig.getString('paginationDropdownHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22699 this.input = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22700 this.input.style.overflow = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22701 this.tableDiv.appendChild(this.input);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22702
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22703 this.elementList = document.createElement("table");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22704 this.elementList.setAttribute('class', 'resultList');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22705 this.input.appendChild(this.elementList);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22706 var height = this.parent.getHeight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22707 if (height) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22708 this.input.style.height = (height - pagination.offsetHeight) + 'px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22709 this.input.style.overflowY = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22710 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22711
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22712 this.elementListHeader = document.createElement("tr");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22713 this.elementList.appendChild(this.elementListHeader);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22714
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22715 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22716 var cell = document.createElement('th');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22717 this.elementListHeader.appendChild(cell);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22718 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22719
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22720 if ( typeof (this.elements[0]) == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22721 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22722 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22723
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22724 var ascButtons = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22725 var descButtons = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22726 var clearButtons = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22727 for (var i in ascButtons ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22728 ascButtons[i].setAttribute('class', 'sort sortAscDeactive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22729 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22730 for (var i in descButtons ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22731 descButtons[i].setAttribute('class', 'sort sortDescDeactive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22732 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22733 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22734 var addSortButton = function(key) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22735 table.keyHeaderList.push(key);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22736 var cell = document.createElement('th');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22737 table.elementListHeader.appendChild(cell);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22738 var sortAsc = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22739 var sortDesc = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22740 var span = document.createElement('div');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22741 span.setAttribute('class', 'headerLabel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22742 span.innerHTML = key;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22743 cell.appendChild(sortDesc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22744 cell.appendChild(span);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22745 cell.appendChild(sortAsc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22746 sortAsc.setAttribute('class', 'sort sortAscDeactive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22747 sortAsc.title = GeoTemConfig.getString('sortAZHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22748 sortDesc.setAttribute('class', 'sort sortDescDeactive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22749 sortDesc.title = GeoTemConfig.getString('sortZAHelp');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22750 ascButtons.push(sortAsc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22751 descButtons.push(sortDesc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22752 sortAsc.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22753 clearButtons();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22754 sortAsc.setAttribute('class', 'sort sortAscActive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22755 table.sortAscending(key);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22756 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22758 sortDesc.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22759 clearButtons();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22760 sortDesc.setAttribute('class', 'sort sortDescActive');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22761 table.sortDescending(key);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22762 table.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22763 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22764 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22765 for (var key in this.elements[0].object.tableContent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22766 addSortButton(key);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22767 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22768
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22769 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22770
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22771 sortAscending : function(key) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22772 var sortFunction = function(e1, e2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22773 if (e1.object.tableContent[key] < e2.object.tableContent[key]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22774 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22775 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22776 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22778 this.elements.sort(sortFunction);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22779 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22781 sortDescending : function(key) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22782 var sortFunction = function(e1, e2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22783 if (e1.object.tableContent[key] > e2.object.tableContent[key]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22784 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22785 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22786 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22787 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22788 this.elements.sort(sortFunction);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22789 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22790
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22791 setPagesText : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22792 var infoText = GeoTemConfig.getString('pageInfo');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22793 infoText = infoText.replace('PAGES_ID', this.pages);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22794 infoText = infoText.replace('PAGE_ID', this.page + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22795 this.pageInfo.innerHTML = infoText;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22796 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22797
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22798 setResultsText : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22799 if (this.elements.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22800 this.resultsInfo.innerHTML = '0 Results';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22801 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22802 var infoText = GeoTemConfig.getString('resultsInfo');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22803 var first = this.page * this.resultsPerPage + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22804 var last = (this.page + 1 == this.pages ) ? this.showElementsLength : first + this.resultsPerPage - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22805 infoText = infoText.replace('RESULTS_FROM_ID', first);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22806 infoText = infoText.replace('RESULTS_TO_ID', last);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22807 infoText = infoText.replace('RESULTS_ID', this.showElementsLength);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22808 this.resultsInfo.innerHTML = infoText;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22809 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22810 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22811
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22812 updateIndices : function(rpp) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22813 if ( typeof this.resultsPerPage == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22814 this.page = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22815 this.resultsPerPage = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22816 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22817 var index = this.page * this.resultsPerPage;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22818 this.resultsPerPage = rpp;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22819 if (this.showSelectedItems) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22820 index = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22821 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22822 this.pages = Math.floor(this.showElementsLength / this.resultsPerPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22823 if (this.showElementsLength % this.resultsPerPage != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22824 this.pages++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22825 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22826 this.page = Math.floor(index / this.resultsPerPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22827 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22828
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22829 update : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22830 var table = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22831 $(this.elementList).find("tr:gt(0)").remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22832 if (this.page == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22833 this.previousPage.setAttribute('class', 'paginationButton previousPageDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22834 this.firstPage.setAttribute('class', 'paginationButton firstPageDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22835 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22836 this.previousPage.setAttribute('class', 'paginationButton previousPageEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22837 this.firstPage.setAttribute('class', 'paginationButton firstPageEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22838 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22839 if (this.page == this.pages - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22840 this.nextPage.setAttribute('class', 'paginationButton nextPageDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22841 this.lastPage.setAttribute('class', 'paginationButton lastPageDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22842 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22843 this.nextPage.setAttribute('class', 'paginationButton nextPageEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22844 this.lastPage.setAttribute('class', 'paginationButton lastPageEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22846 this.setPagesText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22847 this.setResultsText();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22848 if (this.showSelectedItems) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22849 var start = this.page * this.resultsPerPage;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22850 var items = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22851 for (var i = 0; i < this.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22852 if (items == start) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22853 this.first = i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22854 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22855 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22856 if (this.elements[i].selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22857 items++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22858 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22859 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22860 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22861 this.first = this.page * this.resultsPerPage;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22863 //this.last = ( this.page + 1 == this.pages ) ? this.elements.length : this.first + this.resultsPerPage;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22864 var c = GeoTemConfig.getColor(this.id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22865 var itemSet = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22866 var clearDivs = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22867 for (var i = 0; i < itemSet.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22868 if (!itemSet[i].e.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22869 itemSet[i].e.highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22870 $(itemSet[i].div).css('background-color', table.options.unselectedCellColor);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22871 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22872 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22873 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22874 var setHighlight = function(item, div) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22875 var enter = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22876 clearDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22877 if (!item.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22878 item.highlighted = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22879 $(div).css('background-color', 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22880 table.parent.triggerHighlight(item.object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22881 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22882 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22883 var leave = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22884 clearDivs();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22885 if (!item.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22886 table.parent.triggerHighlight();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22887 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22888 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22889 $(div).hover(enter, leave);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22890 $(div).mousemove(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22891 if (!item.selected && !item.highlighted) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22892 item.highlighted = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22893 $(div).css('background-color', 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22894 table.parent.triggerHighlight(item.object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22895 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22896 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22897 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22898 var setSelection = function(item, div, checkbox) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22899 var click = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22900 var checked = $(checkbox).is(':checked');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22901 if (checked) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22902 item.selected = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22903 item.highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22904 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22905 item.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22906 item.highlighted = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22907 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22908 //if( e.target == div ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22909 // $(checkbox).attr('checked', !checked);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22910 //}
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22911 table.parent.tableSelection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22912 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22913 //$(div).click(click);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22914 $(checkbox).click(click);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22915 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22916 this.checkboxes = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22917 var items = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22918 for (var i = this.first; i < this.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22919 var e = this.elements[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22920 //vhz because of an error
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22921 if ( typeof (e) == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22922 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22923 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22924 if (this.showSelectedItems && !e.selected) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22925 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22926 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22927 var itemRow = $("<tr/>").appendTo(this.elementList);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22928 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22929 var checkColumn = $("<td/>").appendTo(itemRow);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22930 var checkbox = $("<input type='checkbox'/>").appendTo(checkColumn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22931 $(checkbox).attr('checked', e.selected);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22932 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22933 var makeSubtext = function(cell, text) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22934 var subtext = text.substring(0, table.options.tableContentOffset);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22935 subtext = subtext.substring(0, subtext.lastIndexOf(' '));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22936 subtext += ' ... ';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22937 var textDiv = $("<div style='display:inline-block;'/>").appendTo(cell);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22938 $(textDiv).html(subtext);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22939 var show = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22940 var fullDiv = $("<div style='display:inline-block;'><a href='javascript:void(0)'>\>\></a></div>").appendTo(cell);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22941 $(fullDiv).click(function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22942 show = !show;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22943 if (show) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22944 $(textDiv).html(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22945 $(fullDiv).html('<a href="javascript:void(0)">\<\<</a>');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22946 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22947 $(textDiv).html(subtext);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22948 $(fullDiv).html('<a href="javascript:void(0)">\>\></a>');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22949 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22950 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22951 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22952 for (var k = 0; k < table.keyHeaderList.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22953 var key = table.keyHeaderList[k];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22954 //vhz
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22955 var text = e.object.tableContent[key];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22956 var cell = $("<td/>").appendTo(itemRow);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22957 if (table.options.tableContentOffset && text.length < table.options.tableContentOffset) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22958 $(cell).html(text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22959 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22960 makeSubtext(cell, text);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22961 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22962 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22963 if (e.selected || e.highlighted) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22964 $(itemRow).css('background-color', 'rgb(' + c.r0 + ',' + c.g0 + ',' + c.b0 + ')');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22965 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22966 $(itemRow).css('background-color', table.options.unselectedCellColor);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22967 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22968 itemSet.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22969 e : e,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22970 div : itemRow
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22971 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22972 setHighlight(e, itemRow);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22973 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22974 setSelection(e, itemRow, checkbox);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22975 this.checkboxes.push(checkbox);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22976 $(checkColumn).css('text-align', 'center');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22977 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22978 items++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22979 if (items == this.resultsPerPage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22980 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22981 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22982 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22983 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22984
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22985 show : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22986 if (GeoTemConfig.allowFilter) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22987 this.parent.filterBar.appendTo(this.selectors);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22988 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22989 this.tableDiv.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22990 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22991
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22992 hide : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22993 this.tableDiv.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22994 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22995
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22996 resetElements : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22997 for (var i = 0; i < this.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22998 this.elements[i].selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
22999 this.elements[i].highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23000 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23001 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23002
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23003 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23004 this.showSelectedItems = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23005 this.showElementsLength = this.elements.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23006 this.showSelected.setAttribute('class', 'smallButton showSelected');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23007 this.updateIndices(this.resultsPerPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23008 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23010 initialize : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23011
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23012 this.tableDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23013 this.tableDiv.setAttribute('class', 'singleTable');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23014 this.parent.gui.input.appendChild(this.tableDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23015
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23016 this.initToolbar();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23017
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23018 this.tableDiv.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23019 this.updateIndices(this.options.initialResultsPerPage);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23020
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23021 this.update();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23022
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23023 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23024 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23025
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23026 function TableElement(object) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23028 this.object = object;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23029 this.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23030 this.highlighted = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23031
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23032 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23033 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23034 * DataObject.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23035 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23036 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23037 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23038 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23039 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23040 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23041 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23042 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23043 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23044 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23045 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23046 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23047 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23048 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23049 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23050 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23051 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23052 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23053
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23054 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23055 * @class DataObject
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23056 * GeoTemCo's data object class
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23057 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23058 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23059 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23060 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23061 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23062 * @param {String} name name of the data object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23063 * @param {String} description description of the data object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23064 * @param {JSON} locations a list of locations with longitude, latitide and place name
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23065 * @param {JSON} dates a list of dates
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23066 * @param {float} lon longitude value of the given place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23067 * @param {float} lat latitude value of the given place
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23068 * @param {Date} timeStart start time of the data object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23069 * @param {Date} timeEnd end time of the data object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23070 * @param {int} granularity granularity of the given time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23071 * @param {int} weight weight of the time object
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23072 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23073
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23074 function DataObject(name, description, locations, dates, weight, tableContent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23075
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23076 this.name = name;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23077 this.description = description;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23078 this.weight = weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23079 this.tableContent = tableContent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23080
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23081 this.percentage = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23082 this.setPercentage = function(percentage) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23083 this.percentage = percentage;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23084 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23085
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23086 this.locations = locations;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23087 this.isGeospatial = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23088 if (this.locations.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23089 this.isGeospatial = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23090 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23091
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23092 this.placeDetails = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23093 for (var i = 0; i < this.locations.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23094 this.placeDetails.push(this.locations[i].place.split("/"));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23095 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23096
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23097 this.getLatitude = function(locationId) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23098 return this.locations[locationId].latitude;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23099 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23100
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23101 this.getLongitude = function(locationId) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23102 return this.locations[locationId].longitude;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23103 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23104
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23105 this.getPlace = function(locationId, level) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23106 if (level >= this.placeDetails[locationId].length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23107 return this.placeDetails[locationId][this.placeDetails[locationId].length - 1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23108 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23109 return this.placeDetails[locationId][level];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23110 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23111
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23112 this.dates = dates;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23113 this.isTemporal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23114 if (this.dates.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23115 this.isTemporal = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23116 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23117
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23118 this.getDate = function(dateId) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23119 return this.dates[dateId].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23120 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23122 this.getTimeGranularity = function(dateId) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23123 return this.dates[dateId].granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23124 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23125
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23126 this.setIndex = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23127 this.index = index;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23128 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23129
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23130 this.getTimeString = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23131 if (this.timeStart != this.timeEnd) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23132 return (SimileAjax.DateTime.getTimeString(this.granularity, this.timeStart) + " - " + SimileAjax.DateTime.getTimeString(this.granularity, this.timeEnd));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23133 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23134 return SimileAjax.DateTime.getTimeString(this.granularity, this.timeStart) + "";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23135 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23136 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23137
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23138 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23139 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23140 * Dataset.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23141 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23142 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23143 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23144 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23145 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23146 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23147 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23148 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23149 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23150 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23151 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23152 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23153 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23154 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23155 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23156 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23157 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23158 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23159
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23160 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23161 * @class Dataset
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23162 * GeoTemCo's Dataset class
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23163 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23164 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23165 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23166 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23167 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23168 * @param {Array} objects data item arrays from different datasets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23169 * @param {String} label label for the datasets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23170 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23171 function Dataset(objects, label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23172
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23173 this.objects = objects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23174 this.label = label;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23175
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23176 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23177 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23178 * TimeDataSource.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23179 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23180 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23181 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23182 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23183 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23184 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23185 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23186 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23187 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23188 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23189 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23190 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23191 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23192 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23193 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23194 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23195 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23196 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23197
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23198 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23199 * @class TimeDataSource, TimeSlice, TimeStack
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23200 * implementation for aggregation of time items
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23201 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23202 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23203 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23204 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23205 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23206 * @param {JSON} options time configuration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23207 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23208 function TimeDataSource(options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23209
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23210 this.options = options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23211 this.timeSlices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23212 this.unit
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23213 this.minDate
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23214 this.maxDate
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23215 this.eventSources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23216 this.events
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23217 this.leftSlice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23218 this.rightSlice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23219
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23220 this.hashMapping
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23222 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23223
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23224 TimeDataSource.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23225
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23226 findTimeUnits : function(granularity, timeUnit, pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23227
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23228 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23229 this.availableUnits = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23230 var givenUnits = SimileAjax.DateTime.gregorianUnitLengths;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23231 for (var i = 0; i < givenUnits.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23232 if (granularity > i) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23233 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23234 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23235 var slices = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23236 var t = new Date(this.minDate.getTime());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23237 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23238 time.roundDownToInterval(t, i, undefined, 1, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23239 slices++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23240 time.incrementByInterval(t, i, undefined);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23241 } while( t.getTime() <= this.maxDate.getTime() && slices < pixels+2 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23242 if (slices > 0 && slices <= pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23243 this.availableUnits.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23244 unit : i,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23245 slices : slices,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23246 label : SimileAjax.DateTime.Strings[GeoTemConfig.language][i]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23247 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23248 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23249 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23250 var unitDiff200 = pixels + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23251 for (var i = 0; i < this.availableUnits.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23252 var diff = Math.abs(this.availableUnits[i].slices - 200);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23253 if (diff < unitDiff200) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23254 unitDiff200 = diff;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23255 this.unit = this.availableUnits[i].unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23256 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23257 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23258
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23259 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23260
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23261 getUnitIndex : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23262 for (var i = 0; i < this.availableUnits.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23263 if (this.unit == this.availableUnits[i].unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23264 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23265 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23267 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23268 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23269
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23270 setTimeUnit : function(unit) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23271 this.unit = unit;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23272 this.initializeSlices();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23273 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23274
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23275 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23276 * initializes the TimeDataSource
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23277 * @param {Timeplot.ColumnSource[]} dataSources the column sources corresponding to the data sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23278 * @param {Timeplot.DefaultEventSource[]} eventSources the event sources corresponding to the column sources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23279 * @param {TimeObject[][]} timeObjects an array of time objects of different sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23280 * @param {SimileAjax.DateTime} granularity the time granularity of the given data
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23281 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23282 initialize : function(dataSources, eventSources, timeObjects, granularity, timeUnit, pixels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23283
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23284 this.dataSources = dataSources;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23285 this.eventSources = eventSources;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23286 this.timeObjects = timeObjects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23287
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23288 this.minDate = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23289 this.maxDate = undefined;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23290 this.hashMapping = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23291
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23292 for (var i = 0; i < timeObjects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23293 this.hashMapping.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23294 for (var j = 0; j < timeObjects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23295 var o = timeObjects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23296 if (o.isTemporal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23297 var g = o.dates[this.options.timeIndex].granularity;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23298 //o.getTimeGranularity(this.options.timeIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23299 if (g == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23300 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23301 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23302 var time = o.dates[this.options.timeIndex].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23303 //o.getDate(this.options.timeIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23304 if (this.minDate == undefined || time.getTime() < this.minDate.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23305 this.minDate = time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23306 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23307 if (this.maxDate == undefined || time.getTime() > this.maxDate.getTime()) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23308 this.maxDate = time;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23309 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23310 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23311 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23312 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23313
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23314 if (this.minDate == undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23315 this.minDate = this.options.defaultMinDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23316 this.maxDate = this.options.defaultMaxDate;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23317 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23318
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23319 this.findTimeUnits(granularity, timeUnit, pixels);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23320 this.initializeSlices();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23321
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23322 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23323
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23324 initializeSlices : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23325 for (var i = 0; i < this.dataSources.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23326 this.dataSources[i]._range = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23327 earliestDate : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23328 latestDate : null,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23329 min : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23330 max : 0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23331 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23332 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23333 this.timeSlices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23334 var time = SimileAjax.DateTime;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23335 var t = new Date(this.minDate.getTime() - 0.9 * time.gregorianUnitLengths[this.unit]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23336 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23337 time.roundDownToInterval(t, this.unit, undefined, 1, 0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23338 var slice = new TimeSlice(SimileAjax.NativeDateUnit.cloneValue(t), this.timeObjects.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23339 this.timeSlices.push(slice);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23340 time.incrementByInterval(t, this.unit, undefined);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23341 } while (t.getTime() <= this.maxDate.getTime() + 1.1 * time.gregorianUnitLengths[this.unit]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23342
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23343 for (var i = 0; i < this.timeObjects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23344 for (var j = 0; j < this.timeObjects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23345 var o = this.timeObjects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23346 if (o.isTemporal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23347 var date = o.dates[this.options.timeIndex].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23348 //o.getDate(this.options.timeIndex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23349 for (var k = 0; k < this.timeSlices.length - 1; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23350 var t1 = this.timeSlices[k].date.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23351 var t2 = this.timeSlices[k + 1].date.getTime();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23352 var stack = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23353 if (date >= t1 && date < t2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23354 stack = this.timeSlices[k].getStack(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23355 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23356 if (k == this.timeSlices.length - 2 && date >= t2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23357 stack = this.timeSlices[k + 1].getStack(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23358 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23359 if (stack != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23360 stack.addObject(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23361 this.hashMapping[i][o.index] = stack;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23362 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23363 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23364 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23365 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23366 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23367 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23369 this.events = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23370 for (var i = 0; i < this.eventSources.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23371 var eventSet = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23372 for (var j = 0; j < this.timeSlices.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23373 var value = new Array("" + this.timeSlices[j].stacks[i].value);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23374 eventSet.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23375 date : this.timeSlices[j].date,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23376 value : value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23377 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23378 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23379 this.eventSources[i].loadData(eventSet);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23380 this.events.push(eventSet);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23381 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23382
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23383 this.leftSlice = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23384 this.rightSlice = this.timeSlices.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23386 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23387
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23388 getSliceNumber : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23389 return this.timeSlices.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23390 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23391
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23392 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23393 * computes the slice index corresponding to a given time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23394 * @param {Date} time the given time
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23395 * @return the corresponding slice index
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23396 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23397 getSliceIndex : function(time) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23398 for (var i = 0; i < this.timeSlices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23399 if (time == this.timeSlices[i].date) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23400 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23401 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23402 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23403 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23404
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23405 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23406 * returns the time of a specific time slice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23407 * @param {int} time the given slice index
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23408 * @return the corresponding slice date
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23409 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23410 getSliceTime : function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23411 return this.timeSlices[index].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23412 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23413
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23414 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23415 * shifts the actual zoomed range
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23416 * @param {int} delta the value to shift (negative for left shift, positive for right shift)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23417 * @return boolean value, if the range could be shifted
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23418 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23419 setShift : function(delta) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23420 if (delta == 1 && this.leftSlice != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23421 this.leftSlice--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23422 this.rightSlice--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23423 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23424 } else if (delta == -1 && this.rightSlice != this.timeSlices.length - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23425 this.leftSlice++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23426 this.rightSlice++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23427 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23428 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23429 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23430 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23431 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23432
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23433 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23434 * zooms the actual range
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23435 * @param {int} delta the value to zoom (negative for zoom out, positive for zoom in)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23436 * @param {Date} time the corresponding time of the actual mouse position on the plot
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23437 * @param {Date} leftTime the time of the left border of a selected timerange or null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23438 * @param {Date} rightTime the time of the right border of a selected timerange or null
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23439 * @return boolean value, if the range could be zoomed
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23440 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23441 setZoom : function(delta, time, leftTime, rightTime) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23442 var n1 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23443 var n2 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23444 var m = -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23445 if (delta > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23446 m = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23447 if (leftTime != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23448 n1 = this.getSliceIndex(leftTime) - this.leftSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23449 n2 = this.rightSlice - this.getSliceIndex(rightTime);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23450 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23451 slice = this.getSliceIndex(time);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23452 if (slice == this.leftSlice || slice == this.rightSlice) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23453 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23454 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23455 n1 = slice - 1 - this.leftSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23456 n2 = this.rightSlice - slice - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23457 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23458 } else if (delta < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23459
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23460 n1 = this.leftSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23461 n2 = this.timeSlices.length - 1 - this.rightSlice;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23462 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23463
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23464 var zoomSlices = 2 * delta;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23465 if (Math.abs(n1 + n2) < Math.abs(zoomSlices)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23466 zoomSlices = n1 + n2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23467 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23468
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23469 if (n1 + n2 == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23470 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23471 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23472
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23473 var m1 = Math.round(n1 / (n1 + n2) * zoomSlices);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23474 var m2 = zoomSlices - m1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23475
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23476 this.leftSlice += m1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23477 this.rightSlice -= m2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23478
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23479 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23480 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23481
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23482 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23483 * resets the plots by loading data of actual zoomed range
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23484 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23485 reset : function(timeGeometry) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23486 for (var i = 0; i < this.eventSources.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23487 this.eventSources[i].loadData(this.events[i].slice(this.leftSlice, this.rightSlice + 1));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23488 if (i + 1 < this.eventSources.length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23489 timeGeometry._earliestDate = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23490 timeGeometry._latestDate = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23491 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23492
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23493 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23494 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23495
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23496 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23497 * Getter for actual zoom
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23498 * @return actual zoom value
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23499 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23500 getZoom : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23501 if (this.timeSlices == undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23502 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23503 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23504 return Math.round((this.timeSlices.length - 3) / 2) - Math.round((this.rightSlice - this.leftSlice - 2) / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23505 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23507 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23508 * Getter for date of the first timeslice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23509 * @return date of the first timeslice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23510 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23511 earliest : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23512 return this.timeSlices[0].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23513 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23514
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23515 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23516 * Getter for date of the last timeslice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23517 * @return date of the last timeslice
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23518 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23519 latest : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23520 return this.timeSlices[this.timeSlices.length - 1].date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23521 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23522
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23523 setOverlay : function(timeObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23524 for (var i = 0; i < this.timeSlices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23525 this.timeSlices[i].reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23526 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23527 for (var j in timeObjects ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23528 for (var k in timeObjects[j] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23529 var o = timeObjects[j][k];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23530 if (o.isTemporal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23531 if (o.getTimeGranularity(this.options.timeIndex) == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23532 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23533 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23534 this.hashMapping[j][o.index].overlay += o.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23536 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23537 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23538 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23539
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23540 size : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23541 if (this.timeSlices.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23542 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23543 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23544 return this.timeSlices[0].stacks.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23545 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23546 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23547
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23548 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23549 * small class that represents a time slice of the actual timeplot.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23550 * it has a specific date and contains its corrsponding data objects as well
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23551 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23552 function TimeSlice(date, rows) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23553
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23554 this.date = date;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23555 this.selected = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23556
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23557 this.stacks = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23558 for (var i = 0; i < rows; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23559 this.stacks.push(new TimeStack());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23560 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23561
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23562 this.getStack = function(row) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23563 return this.stacks[row];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23564 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23565
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23566 this.reset = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23567 for (var i in this.stacks ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23568 this.stacks[i].overlay = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23569 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23570 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23571
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23572 this.overlay = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23573 var value = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23574 for (var i in this.stacks ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23575 if (this.stacks[i].overlay > value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23576 value = this.stacks[i].overlay;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23577 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23578 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23579 return value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23580 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23581
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23582 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23583
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23584 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23585 * small class that represents a stack for a time slice which
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23586 * holds items for different datasets for the specific time range
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23587 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23588 function TimeStack() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23589
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23590 this.overlay = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23591 this.value = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23592 this.elements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23594 this.addObject = function(object) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23595 this.elements.push(object);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23596 this.value += object.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23597 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23598
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23599 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23600 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23601 * Binning.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23602 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23603 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23604 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23605 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23606 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23607 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23608 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23609 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23610 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23611 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23612 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23613 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23614 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23615 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23616 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23617 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23618 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23619 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23620
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23621 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23622 * @class Binning
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23623 * Calculates map aggregation with several binning algorithms
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23624 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23625 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23626 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23627 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23628 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23629 Binning = function(map, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23630
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23631 this.map = map;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23632 this.options = options;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23633 this.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23634
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23635 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23636
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23637 Binning.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23638
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23639 getSet : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23640 var type = this.options.binning;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23641 if (!type) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23642 return this.getExactBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23643 } else if (type == 'generic') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23644 return this.getGenericBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23645 } else if (type == 'square') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23646 return this.getSquareBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23647 } else if (type == 'hexagonal') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23648 return this.getHexagonalBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23649 } else if (type == 'triangular') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23650 return this.getTriangularBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23651 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23652 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23653
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23654 getExactBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23655 if ( typeof this.binnings['exact'] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23656 this.exactBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23657 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23658 return this.binnings['exact'];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23659 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23660
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23661 getGenericBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23662 if ( typeof this.binnings['generic'] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23663 this.genericBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23664 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23665 return this.binnings['generic'];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23666 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23667
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23668 getSquareBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23669 if ( typeof this.binnings['square'] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23670 this.squareBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23672 return this.binnings['square'];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23673 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23674
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23675 getHexagonalBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23676 if ( typeof this.binnings['hexagonal'] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23677 this.hexagonalBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23678 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23679 return this.binnings['hexagonal'];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23680 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23681
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23682 getTriangularBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23683 if ( typeof this.binnings['triangular'] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23684 this.triangularBinning();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23686 return this.binnings['triangular'];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23687 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23688
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23689 reset : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23690 this.zoomLevels = this.map.getNumZoomLevels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23691 this.binnings = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23692 this.minimumRadius = this.options.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23693 this.maximumRadius = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23694 this.maximumPoints = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23695 this.minArea = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23696 this.maxArea = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23697 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23698
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23699 getMaxRadius : function(size) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23700 return 4 * Math.log(size) / Math.log(2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23701 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23702
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23703 setObjects : function(objects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23704 this.objects = objects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23705 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23706 var weight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23707 for (var j = 0; j < this.objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23708 if (this.objects[i][j].isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23709 weight += this.objects[i][j].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23710 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23711 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23712 var r = this.getMaxRadius(weight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23713 if (r > this.maximumRadius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23714 this.maximumRadius = r;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23715 this.maximumPoints = weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23716 this.maxArea = Math.PI * this.maximumRadius * this.maximumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23717 this.minArea = Math.PI * this.minimumRadius * this.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23718 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23719 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23720 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23721
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23722 dist : function(x1, y1, x2, y2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23723 return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23724 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23725
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23726 exactBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23727 var circleSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23728 var hashMaps = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23729 var selectionHashs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23730
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23731 var circleAggregates = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23732 var bins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23733 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23734 bins.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23735 circleAggregates.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23736 for (var j = 0; j < this.objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23737 var o = this.objects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23738 if (o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23739 if ( typeof circleAggregates[i]['' + o.getLongitude(this.options.mapIndex)] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23740 circleAggregates[i]['' + o.getLongitude(this.options.mapIndex)] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23742 if ( typeof circleAggregates[i][''+o.getLongitude(this.options.mapIndex)]['' + o.getLatitude(this.options.mapIndex)] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23743 circleAggregates[i][''+o.getLongitude(this.options.mapIndex)]['' + o.getLatitude(this.options.mapIndex)] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23744 bins[i].push(circleAggregates[i][''+o.getLongitude(this.options.mapIndex)]['' + o.getLatitude(this.options.mapIndex)]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23745 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23746 circleAggregates[i][''+o.getLongitude(this.options.mapIndex)]['' + o.getLatitude(this.options.mapIndex)].push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23747 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23748 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23749 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23750
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23751 var circles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23752 var hashMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23753 var selectionMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23754 for (var i = 0; i < bins.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23755 circles.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23756 hashMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23757 selectionMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23758 for (var j = 0; j < bins[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23759 var bin = bins[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23760 var p = new OpenLayers.Geometry.Point(bin[0].getLongitude(this.options.mapIndex), bin[0].getLatitude(this.options.mapIndex), null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23761 p.transform(this.map.displayProjection, this.map.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23762 var weight = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23763 for (var z = 0; z < bin.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23764 weight += bin[z].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23765 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23766 var radius = this.options.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23767 if (this.options.noBinningRadii == 'dynamic') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23768 radius = this.getRadius(weight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23769 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23770 var circle = new CircleObject(p.x, p.y, 0, 0, bin, radius, i, weight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23771 circles[i].push(circle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23772 for (var z = 0; z < bin.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23773 hashMap[i][bin[z].index] = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23774 selectionMap[i][bin[z].index] = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23775 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23776 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23778 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23779 circleSets.push(circles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23780 hashMaps.push(hashMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23781 selectionHashs.push(selectionMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23782 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23783 this.binnings['exact'] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23784 circleSets : circleSets,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23785 hashMaps : hashMaps,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23786 selectionHashs : selectionHashs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23787 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23788 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23789
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23790 genericClustering : function(objects, id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23791 var binSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23792 var circleSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23793 var hashMaps = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23794 var selectionHashs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23795 var clustering = new Clustering(-20037508.34, -20037508.34, 20037508.34, 20037508.34);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23796 for (var i = 0; i < objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23797 for (var j = 0; j < objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23798 var o = objects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23799 if (o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23800 var p = new OpenLayers.Geometry.Point(o.getLongitude(this.options.mapIndex), o.getLatitude(this.options.mapIndex), null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23801 p.transform(this.map.displayProjection, this.map.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23802 var point = new Vertex(Math.floor(p.x), Math.floor(p.y), objects.length, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23803 point.addElement(o, o.weight, i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23804 clustering.add(point);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23805 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23806 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23807 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23808
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23809 for (var i = 0; i < this.zoomLevels; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23810 var bins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23811 var circles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23812 var hashMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23813 var selectionMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23814 for (var j = 0; j < objects.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23815 circles.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23816 hashMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23817 selectionMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23818 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23819 var resolution = this.map.getResolutionForZoom(this.zoomLevels - i - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23820 clustering.mergeForResolution(resolution, this.options.circleGap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23821 for (var j = 0; j < clustering.vertices.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23822 var point = clustering.vertices[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23823 if (!point.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23824 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23825 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23826 var balls = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23827 for (var k = 0; k < point.elements.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23828 if (point.elements[k].length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23829 balls.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23830 search : k,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23831 elements : point.elements[k],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23832 radius : point.radii[k],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23833 weight : point.weights[k]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23834 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23835 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23836 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23837 var orderBalls = function(b1, b2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23838 if (b1.radius > b2.radius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23839 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23840 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23841 if (b2.radius > b1.radius) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23842 return 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23843 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23844 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23845 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23846 var fatherBin = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23847 circles : [],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23848 length : 0,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23849 radius : point.radius / resolution,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23850 x : point.x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23851 y : point.y
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23852 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23853 for (var k = 0; k < objects.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23854 fatherBin.circles.push(false);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23855 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23856 var createCircle = function(sx, sy, ball) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23857 var index = id || ball.search;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23858 var circle = new CircleObject(point.x, point.y, sx, sy, ball.elements, ball.radius, index, ball.weight, fatherBin);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23859 circles[ball.search].push(circle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23860 fatherBin.circles[index] = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23861 fatherBin.length++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23862 for (var k = 0; k < ball.elements.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23863 hashMap[ball.search][ball.elements[k].index] = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23864 selectionMap[ball.search][ball.elements[k].index] = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23865 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23866 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23867 if (balls.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23868 createCircle(0, 0, balls[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23869 } else if (balls.length == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23870 var r1 = balls[0].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23871 var r2 = balls[1].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23872 createCircle(-1 * r2, 0, balls[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23873 createCircle(r1, 0, balls[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23874 } else if (balls.length == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23875 balls.sort(orderBalls);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23876 var r1 = balls[0].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23877 var r2 = balls[1].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23878 var r3 = balls[2].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23879 var d = ((2 / 3 * Math.sqrt(3) - 1) / 2) * r2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23880 var delta1 = point.radius / resolution - r1 - d;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23881 var delta2 = r1 - delta1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23882 createCircle(-delta1, 0, balls[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23883 createCircle(delta2 + r2 - 3 * d, r2, balls[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23884 createCircle(delta2 + r3 - (3 * d * r3 / r2), -1 * r3, balls[2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23885 } else if (balls.length == 4) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23886 balls.sort(orderBalls);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23887 var r1 = balls[0].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23888 var r2 = balls[1].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23889 var r3 = balls[2].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23890 var r4 = balls[3].radius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23891 var d = (Math.sqrt(2) - 1) * r2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23892 createCircle(-1 * d - r2, 0, balls[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23893 createCircle(r1 - r2, -1 * d - r4, balls[3]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23894 createCircle(r1 - r2, d + r3, balls[2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23895 createCircle(d + r1, 0, balls[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23896 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23897 if (fatherBin.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23898 bins.push(fatherBin);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23899 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23900 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23901 circleSets.push(circles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23902 binSets.push(bins);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23903 hashMaps.push(hashMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23904 selectionHashs.push(selectionMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23905 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23906 circleSets.reverse();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23907 binSets.reverse();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23908 hashMaps.reverse();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23909 selectionHashs.reverse();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23910 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23911 circleSets : circleSets,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23912 binSets : binSets,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23913 hashMaps : hashMaps,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23914 selectionHashs : selectionHashs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23915 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23916 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23917
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23918 genericBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23919 if (this.options.circlePackings || this.objects.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23920 this.binnings['generic'] = this.genericClustering(this.objects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23921 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23922 var circleSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23923 var hashMaps = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23924 var selectionHashs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23925 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23926 var sets = this.genericClustering([this.objects[i]], i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23927 if (i == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23928 circleSets = sets.circleSets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23929 hashMaps = sets.hashMaps;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23930 selectionHashs = sets.selectionHashs;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23931 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23932 for (var j = 0; j < circleSets.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23933 circleSets[j] = circleSets[j].concat(sets.circleSets[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23934 hashMaps[j] = hashMaps[j].concat(sets.hashMaps[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23935 selectionHashs[j] = selectionHashs[j].concat(sets.selectionHashs[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23936 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23937 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23938 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23939 this.binnings['generic'] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23940 circleSets : circleSets,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23941 hashMaps : hashMaps,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23942 selectionHashs : selectionHashs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23943 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23944 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23945 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23946
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23947 getRadius : function(n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23948 if (n == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23949 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23950 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23951 if (n == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23952 return this.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23953 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23954 return Math.sqrt((this.minArea + (this.maxArea - this.minArea) / (this.maximumPoints - 1) * (n - 1) ) / Math.PI);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23955 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23956
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23957 getBinRadius : function(n, r_max, N) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23958 if (n == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23959 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23960 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23961 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23962 function log2(x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23963 return (Math.log(x)) / (Math.log(2));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23964 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23965 var r0 = this.options.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23966 var r;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23967 if ( typeof r_max == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23968 return r0 + n / Math.sqrt(this.options.maximumPoints);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23969 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23970 return r0 + (r_max - r0 ) * log2(n) / log2(N);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23971 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23972 var minArea = Math.PI * this.options.minimumRadius * this.options.minimumRadius;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23973 var maxArea = Math.PI * r_max * r_max;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23974 return Math.sqrt((minArea + (maxArea - minArea) / (N - 1) * (n - 1) ) / Math.PI);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23975 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23976
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23977 shift : function(type, bin, radius, elements) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23978
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23979 var x1 = bin.x, x2 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23980 var y1 = bin.y, y2 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23981 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23982 x2 += elements[i].x / elements.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23983 y2 += elements[i].y / elements.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23984 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23985
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23986 var sx = 0, sy = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23987
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23988 if (type == 'square') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23989 var dx = Math.abs(x2 - x1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23990 var dy = Math.abs(y2 - y1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23991 var m = dy / dx;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23992 var n = y1 - m * x1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23993 if (dx > dy) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23994 sx = bin.x - (x1 + bin.r - radius );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23995 sy = bin.y - (m * bin.x + n );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23996 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23997 sy = bin.y - (y1 + bin.r - radius );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23998 sx = bin.x - (bin.y - n) / m;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
23999 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24000 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24002 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24003 x : sx,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24004 y : sy
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24005 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24006
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24007 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24008
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24009 binSize : function(elements) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24010 var size = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24011 for (var i in elements ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24012 size += elements[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24013 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24014 return size;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24015 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24016
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24017 setCircleSet : function(id, binData) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24018 var circleSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24019 var hashMaps = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24020 var selectionHashs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24021 for (var i = 0; i < binData.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24022 var circles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24023 var hashMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24024 var selectionMap = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24025 for (var j = 0; j < this.objects.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24026 circles.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24027 hashMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24028 selectionMap.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24029 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24030 var points = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24031 var max = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24032 var radius = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24033 var resolution = this.map.getResolutionForZoom(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24034 for (var j = 0; j < binData[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24035 for (var k = 0; k < binData[i][j].bin.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24036 var bs = this.binSize(binData[i][j].bin[k]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24037 if (bs > max) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24038 max = bs;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24039 radius = binData[i][j].r / resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24040 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24041 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24042 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24043 for (var j = 0; j < binData[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24044 var bin = binData[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24045 for (var k = 0; k < bin.bin.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24046 if (bin.bin[k].length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24047 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24048 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24049 var weight = this.binSize(bin.bin[k]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24050 var r = this.getBinRadius(weight, radius, max);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24051 var shift = this.shift(id, bin, r * resolution, bin.bin[k], i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24052 var circle = new CircleObject(bin.x - shift.x, bin.y - shift.y, 0, 0, bin.bin[k], r, k, weight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24053 circles[k].push(circle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24054 for (var z = 0; z < bin.bin[k].length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24055 hashMap[k][bin.bin[k][z].index] = circle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24056 selectionMap[k][bin.bin[k][z].index] = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24057 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24058 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24059 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24060 circleSets.push(circles);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24061 hashMaps.push(hashMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24062 selectionHashs.push(selectionMap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24063 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24064 this.binnings[id] = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24065 circleSets : circleSets,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24066 hashMaps : hashMaps,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24067 selectionHashs : selectionHashs
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24068 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24069 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24070
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24071 squareBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24072
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24073 var l = 20037508.34;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24074 var area0 = l * l * 4;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24075 var binCount = this.options.binCount;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24076
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24077 var bins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24078 var binData = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24079 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24080 bins.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24081 binData.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24082 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24083
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24084 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24085 for (var j = 0; j < this.objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24086 var o = this.objects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24087 if (!o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24088 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24089 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24090 var p = new OpenLayers.Geometry.Point(o.getLongitude(this.options.mapIndex), o.getLatitude(this.options.mapIndex), null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24091 p.transform(this.map.displayProjection, this.map.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24092 o.x = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24093 o.y = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24094 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24095 var bc = binCount * Math.pow(2, k);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24096 var a = 2 * l / bc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24097 var binX = Math.floor((p.x + l) / (2 * l) * bc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24098 var binY = Math.floor((p.y + l) / (2 * l) * bc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24099 if ( typeof bins[k]['' + binX] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24100 bins[k]['' + binX] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24101 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24102 if ( typeof bins[k][''+binX]['' + binY] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24103 bins[k][''+binX]['' + binY] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24104 for (var z = 0; z < this.objects.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24105 bins[k][''+binX]['' + binY].push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24106 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24107 var x = binX * a + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24108 var y = binY * a + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24109 binData[k].push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24110 bin : bins[k][''+binX]['' + binY],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24111 x : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24112 y : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24113 a : a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24114 r : a / 2
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24115 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24116 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24117 bins[k][''+binX][''+binY][i].push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24118 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24120 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24121
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24122 this.setCircleSet('square', binData);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24123
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24124 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24125
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24126 triangularBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24127
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24128 var l = 20037508.34;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24129 var a0 = this.options.binCount;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24130 var a1 = Math.sqrt(4 * a0 * a0 / Math.sqrt(3));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24131 var binCount = a0 / a1 * a0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24132
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24133 var bins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24134 var binData = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24135 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24136 bins.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24137 binData.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24138 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24139
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24140 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24141 for (var j = 0; j < this.objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24142 var o = this.objects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24143 if (!o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24144 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24145 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24146 var p = new OpenLayers.Geometry.Point(o.getLongitude(this.options.mapIndex), o.getLatitude(this.options.mapIndex), null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24147 p.transform(this.map.displayProjection, this.map.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24148 o.x = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24149 o.y = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24150 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24151 var x_bc = binCount * Math.pow(2, k);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24152 var y_bc = x_bc * x_bc / Math.sqrt(x_bc * x_bc - x_bc * x_bc / 4);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24153 var a = 2 * l / x_bc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24154 var h = 2 * l / y_bc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24155 var binY = Math.floor((p.y + l) / (2 * l) * y_bc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24156 if ( typeof bins[k]['' + binY] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24157 bins[k]['' + binY] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24158 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24159 var triangleIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24160 var partitionsX = x_bc * 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24161 var partition = Math.floor((p.x + l) / (2 * l) * partitionsX);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24162 var xMax = a / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24163 var yMax = h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24164 var x = p.x + l - partition * a / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24165 var y = p.y + l - binY * h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24166 if (binY % 2 == 0 && partition % 2 == 1 || binY % 2 == 1 && partition % 2 == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24167 if (y + yMax / xMax * x < yMax) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24168 triangleIndex = partition;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24169 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24170 triangleIndex = partition + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24171 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24172 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24173 if (y > yMax / xMax * x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24174 triangleIndex = partition;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24175 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24176 triangleIndex = partition + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24177 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24178 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24179 if ( typeof bins[k][''+binY]['' + triangleIndex] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24180 bins[k][''+binY]['' + triangleIndex] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24181 for (var z = 0; z < this.objects.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24182 bins[k][''+binY]['' + triangleIndex].push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24184 var r = Math.sqrt(3) / 6 * a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24185 var x = (triangleIndex - 1) * a / 2 + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24186 var y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24187 if (binY % 2 == 0 && triangleIndex % 2 == 0 || binY % 2 == 1 && triangleIndex % 2 == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24188 y = binY * h + h - r - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24189 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24190 y = binY * h + r - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24191 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24192 binData[k].push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24193 bin : bins[k][''+binY]['' + triangleIndex],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24194 x : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24195 y : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24196 a : a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24197 r : r
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24198 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24199 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24200 bins[k][''+binY][''+triangleIndex][i].push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24201 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24202 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24203 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24204
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24205 this.setCircleSet('triangular', binData);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24206
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24207 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24208
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24209 hexagonalBinning : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24210
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24211 var l = 20037508.34;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24212 var a0 = this.options.binCount;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24213 var a2 = Math.sqrt(4 * a0 * a0 / Math.sqrt(3)) / Math.sqrt(6);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24214 var binCount = a0 / a2 * a0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24215
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24216 var bins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24217 var binData = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24218 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24219 bins.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24220 binData.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24221 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24222
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24223 for (var i = 0; i < this.objects.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24224 for (var j = 0; j < this.objects[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24225 var o = this.objects[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24226 if (!o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24227 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24228 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24229 var p = new OpenLayers.Geometry.Point(o.getLongitude(this.options.mapIndex), o.getLatitude(this.options.mapIndex), null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24230 p.transform(this.map.displayProjection, this.map.projection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24231 o.x = p.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24232 o.y = p.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24233 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24234 var x_bc = binCount * Math.pow(2, k);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24235 var y_bc = x_bc * x_bc / Math.sqrt(x_bc * x_bc - x_bc * x_bc / 4);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24236 var a = 2 * l / x_bc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24237 var h = 2 * l / y_bc;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24238 var binY = Math.floor((p.y + l) / (2 * l) * y_bc);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24239 if ( typeof bins[k]['' + binY] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24240 bins[k]['' + binY] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24241 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24242 var triangleIndex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24243 var partitionsX = x_bc * 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24244 var partition = Math.floor((p.x + l) / (2 * l) * partitionsX);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24245 var xMax = a / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24246 var yMax = h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24247 var x = p.x + l - partition * a / 2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24248 var y = p.y + l - binY * h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24249 if (binY % 2 == 0 && partition % 2 == 1 || binY % 2 == 1 && partition % 2 == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24250 if (y + yMax / xMax * x < yMax) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24251 triangleIndex = partition;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24252 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24253 triangleIndex = partition + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24254 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24255 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24256 if (y > yMax / xMax * x) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24257 triangleIndex = partition;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24258 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24259 triangleIndex = partition + 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24260 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24261 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24262 if ( typeof bins[k][''+binY]['' + triangleIndex] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24263 bins[k][''+binY]['' + triangleIndex] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24264 for (var z = 0; z < this.objects.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24265 bins[k][''+binY]['' + triangleIndex].push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24266 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24267 var r = Math.sqrt(3) / 6 * a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24268 var x = (triangleIndex - 1) * a / 2 + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24269 var y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24270 if (binY % 2 == 0 && triangleIndex % 2 == 0 || binY % 2 == 1 && triangleIndex % 2 == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24271 y = binY * h + h - r - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24272 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24273 y = binY * h + r - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24274 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24275 binData[k].push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24276 bin : bins[k][''+binY]['' + triangleIndex],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24277 x : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24278 y : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24279 a : a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24280 r : r,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24281 h : h,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24282 binX : triangleIndex,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24283 binY : binY
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24284 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24285 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24286 bins[k][''+binY][''+triangleIndex][i].push(o);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24287 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24288 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24289 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24290
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24291 var hexaBins = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24292 var hexaBinData = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24293 for (var k = 0; k < this.zoomLevels; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24294 hexaBins.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24295 hexaBinData.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24296 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24297
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24298 for (var i = 0; i < binData.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24299 for (var j = 0; j < binData[i].length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24300 var bin = binData[i][j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24301 var binY = Math.floor(bin.binY / 2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24302 var binX = Math.floor(bin.binX / 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24303 var x, y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24304 var a = bin.a;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24305 var h = bin.h;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24306 if (bin.binX % 6 < 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24307 if ( typeof hexaBins[i]['' + binY] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24308 hexaBins[i]['' + binY] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24309 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24310 y = binY * 2 * bin.h + bin.h - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24311 x = binX * 1.5 * bin.a + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24312 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24313 if (bin.binY % 2 == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24314 binY++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24315 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24316 if ( typeof hexaBins[i]['' + binY] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24317 hexaBins[i]['' + binY] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24318 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24319 y = binY * 2 * bin.h - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24320 x = binX * 1.5 * bin.a + a / 2 - l;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24321 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24322 if ( typeof hexaBins[i][''+binY]['' + binX] == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24323 hexaBins[i][''+binY]['' + binX] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24324 for (var z = 0; z < this.objects.length; z++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24325 hexaBins[i][''+binY]['' + binX].push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24326 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24327 hexaBinData[i].push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24328 bin : hexaBins[i][''+binY]['' + binX],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24329 x : x,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24330 y : y,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24331 a : bin.a,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24332 r : bin.h
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24333 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24334 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24335 for (var k = 0; k < bin.bin.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24336 for (var m = 0; m < bin.bin[k].length; m++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24337 hexaBins[i][''+binY][''+binX][k].push(bin.bin[k][m]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24338 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24339 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24340 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24341 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24342
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24343 this.setCircleSet('hexagonal', hexaBinData);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24344
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24345 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24346 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24347
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24348 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24349 * MapDataSource.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24350 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24351 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24352 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24353 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24354 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24355 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24356 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24357 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24358 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24359 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24360 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24361 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24362 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24363 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24364 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24365 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24366 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24367 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24369 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24370 * @class MapDataSource
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24371 * implementation for aggregation of map items
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24372 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24373 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24374 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24375 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24376 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24377 * @param {OpenLayers.Map} olMap openlayers map object of the map widget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24378 * @param {JSON} options map configuration
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24379 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24380 function MapDataSource(olMap, options) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24381
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24382 this.olMap = olMap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24383 this.circleSets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24384 this.binning = new Binning(olMap, options);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24385
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24386 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24387
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24388 MapDataSource.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24389
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24390 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24391 * initializes the MapDataSource
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24392 * @param {MapObject[][]} mapObjects an array of map objects of different sets
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24393 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24394 initialize : function(mapObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24395
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24396 if (mapObjects != this.mapObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24397 this.binning.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24398 this.binning.setObjects(mapObjects);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24399 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24400 this.mapObjects = mapObjects;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24401
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24402 var set = this.binning.getSet();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24403 this.circleSets = set.circleSets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24404 this.binSets = set.binSets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24405 this.hashMapping = set.hashMaps;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24406
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24407 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24408
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24409 getObjectsByZoom : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24410 var zoom = Math.floor(this.olMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24411 if (this.circleSets.length < zoom) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24412 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24413 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24414 return this.circleSets[zoom];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24415 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24416
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24417 getAllObjects : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24418 if (this.circleSets.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24419 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24420 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24421 return this.circleSets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24422 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24423
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24424 getAllBins : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24425 if (this.binSets.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24426 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24427 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24428 return this.binSets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24429 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24430
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24431 clearOverlay : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24432 var zoom = Math.floor(this.olMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24433 var circles = this.circleSets[zoom];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24434 for (var i in circles ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24435 for (var j in circles[i] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24436 circles[i][j].reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24437 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24438 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24439 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24440
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24441 setOverlay : function(mapObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24442 var zoom = Math.floor(this.olMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24443 for (var j in mapObjects ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24444 for (var k in mapObjects[j] ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24445 var o = mapObjects[j][k];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24446 if (o.isGeospatial) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24447 this.hashMapping[zoom][j][o.index].overlay += o.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24448 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24449 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24450 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24451 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24452
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24453 size : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24454 if (this.circleSets.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24455 return 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24456 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24457 return this.circleSets[0].length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24458 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24459
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24460 getCircle : function(index, id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24461 var zoom = Math.floor(this.olMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24462 return this.hashMapping[zoom][index][id];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24463 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24464 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24465 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24466 * Clustering.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24467 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24468 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24469 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24470 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24471 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24472 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24473 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24474 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24475 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24476 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24477 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24478 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24479 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24480 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24481 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24482 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24483 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24484 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24485
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24486 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24487 * @class Vertex, Edge, Triangle, Clustering, BinaryHeap
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24488 * Dynamic Delaunay clustering algorithm (see GeoTemCo paper)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24489 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24490 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24491 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24492 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24493 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24494
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24495 function Vertex(x, y, categories, binning) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24496 this.x = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24497 this.y = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24498 this.radius
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24499 this.size = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24500 this.elements = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24501 this.radii = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24502 this.weights = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24503 this.legal = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24504 this.binning = binning;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24505 if (categories != undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24506 for (var i = 0; i < categories; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24507 this.elements.push([]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24508 this.weights.push(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24509 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24510 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24511 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24512
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24513 Vertex.prototype.merge = function(v0, v1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24514 for (var i = 0; i < v0.elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24515 this.elements[i] = v0.elements[i].concat(v1.elements[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24516 this.weights[i] = v0.weights[i] + v1.weights[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24517 this.size += this.weights[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24518 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24519 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24520
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24521 Vertex.prototype.CalculateRadius = function(resolution) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24522 this.radii = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24523 for (i in this.elements ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24524 this.radii.push(this.binning.getRadius(this.weights[i]));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24525 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24526 if (this.radii.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24527 this.radius = this.radii[0] * resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24528 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24529 var count = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24530 var max1 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24531 var max2 = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24532 for (i in this.radii ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24533 if (this.radii[i] != 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24534 count++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24536 if (this.radii[i] > max1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24537 if (max1 > max2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24538 max2 = max1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24539 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24540 max1 = this.radii[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24541 } else if (this.radii[i] > max2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24542 max2 = this.radii[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24543 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24544 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24545 if (count == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24546 this.radius = max1 * resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24547 } else if (count == 2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24548 this.radius = (max1 + max2) * resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24549 } else if (count == 3) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24550 var d = (2 / 3 * Math.sqrt(3) - 1) * max1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24551 this.radius = (d + max1 + max2) * resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24552 } else if (count == 4) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24553 var d = (Math.sqrt(2) - 1) * max2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24554 this.radius = (d + max1 + max2) * resolution;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24556 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24557 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24558
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24559 Vertex.prototype.addElement = function(e, weight, index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24560 this.elements[index].push(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24561 this.size += weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24562 this.weights[index] += weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24563 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24564 function Edge(v0, v1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24565 this.v0 = v0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24566 this.v1 = v1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24567 this.leftFace
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24568 this.rightFace
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24569 this.legal = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24570 this.setLength();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24571 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24572
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24573 Edge.prototype.setLength = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24574 var dx = this.v0.x - this.v1.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24575 var dy = this.v0.y - this.v1.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24576 this.length = Math.sqrt(dx * dx + dy * dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24577 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24578
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24579 Edge.prototype.contains = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24580 if (this.v0 == v || this.v1 == v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24581 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24582 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24583 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24584 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24586 Edge.prototype.replaceFace = function(f_old, f_new) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24587 if (this.leftFace == f_old) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24588 this.leftFace = f_new;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24589 } else if (this.rightFace == f_old) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24590 this.rightFace = f_new;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24591 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24592 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24593
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24594 Edge.prototype.setFace = function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24595 if (f.leftOf(this)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24596 this.leftFace = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24597 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24598 this.rightFace = f;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24599 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24600 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24601
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24602 Edge.prototype.setFaces = function(f1, f2) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24603 if (f1.leftOf(this)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24604 this.leftFace = f1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24605 this.rightFace = f2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24606 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24607 this.leftFace = f2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24608 this.rightFace = f1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24609 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24610 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24611
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24612 Edge.prototype.removeFace = function(f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24613 if (this.leftFace == f) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24614 this.leftFace = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24615 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24616 this.rightFace = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24617 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24618 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24619
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24620 Edge.prototype.equals = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24621 if (this.v0 == e.v0 && this.v1 == e.v1 || this.v0 == e.v1 && this.v1 == e.v0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24622 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24623 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24624 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24625 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24626 function Triangle(edges) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24627 this.edges = edges;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24628 this.setVertices();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24629 this.descendants = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24630 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24631
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24632 Triangle.prototype.getTriple = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24633 var i = arrayIndex(this.edges, e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24634 return {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24635 e_s : this.edges[(i + 1) % 3],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24636 e_p : this.edges[(i + 2) % 3],
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24637 u : this.vertices[(i + 2) % 3]
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24638 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24639 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24640
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24641 Triangle.prototype.leftOf = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24642 var i = arrayIndex(this.edges, e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24643 if (this.vertices[i].y != this.vertices[(i + 1) % 3].y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24644 return this.vertices[i].y > this.vertices[(i + 1) % 3].y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24645 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24646 return this.vertices[i].y > this.vertices[(i + 2) % 3].y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24647 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24648
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24649 Triangle.prototype.getNext = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24650 var i = arrayIndex(this.vertices, v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24651 return this.vertices[(i + 1) % 3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24652 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24653
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24654 Triangle.prototype.oppositeEdge = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24655 var i = arrayIndex(this.vertices, v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24656 return this.edges[(i + 1) % 3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24657 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24658
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24659 Triangle.prototype.contains = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24660 return arrayIndex(this.vertices, v) != -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24661 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24662
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24663 Triangle.prototype.replace = function(e_old, e_new) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24664 this.edges[arrayIndex(this.edges, e_old)] = e_new;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24665 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24666
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24667 Triangle.prototype.setVertices = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24668 if (this.edges[1].v0 == this.edges[0].v0 || this.edges[1].v1 == this.edges[0].v0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24669 this.vertices = [this.edges[0].v1, this.edges[0].v0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24670 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24671 this.vertices = [this.edges[0].v0, this.edges[0].v1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24672 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24673 if (this.edges[2].v0 == this.vertices[0]) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24674 this.vertices.push(this.edges[2].v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24675 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24676 this.vertices.push(this.edges[2].v0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24677 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24678 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24679
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24680 Triangle.prototype.replaceBy = function(triangles) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24681 this.descendants = triangles;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24682 this.edges[0].replaceFace(this, triangles[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24683 this.edges[1].replaceFace(this, triangles[1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24684 this.edges[2].replaceFace(this, triangles[2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24685 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24686
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24687 Triangle.prototype.CalcCircumcircle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24688 var v0 = this.vertices[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24689 var v1 = this.vertices[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24690 var v2 = this.vertices[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24691 var A = v1.x - v0.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24692 var B = v1.y - v0.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24693 var C = v2.x - v0.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24694 var D = v2.y - v0.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24695 var E = A * (v0.x + v1.x) + B * (v0.y + v1.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24696 var F = C * (v0.x + v2.x) + D * (v0.y + v2.y);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24697 var G = 2.0 * (A * (v2.y - v1.y) - B * (v2.x - v1.x));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24698 var cx = (D * E - B * F) / G;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24699 var cy = (A * F - C * E) / G;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24700 this.center = new Vertex(cx, cy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24701 var dx = this.center.x - v0.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24702 var dy = this.center.y - v0.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24703 this.radius_squared = dx * dx + dy * dy;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24704 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24705
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24706 Triangle.prototype.inCircumcircle = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24707 if (this.radius_squared == undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24708 this.CalcCircumcircle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24709 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24710 var dx = this.center.x - v.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24711 var dy = this.center.y - v.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24712 var dist_squared = dx * dx + dy * dy;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24713 return (dist_squared <= this.radius_squared );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24714 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24715
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24716 Triangle.prototype.interior = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24717 var v0 = this.vertices[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24718 var v1 = this.vertices[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24719 var v2 = this.vertices[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24720 var dotAB = (v.x - v0.x ) * (v0.y - v1.y ) + (v.y - v0.y ) * (v1.x - v0.x );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24721 var dotBC = (v.x - v1.x ) * (v1.y - v2.y ) + (v.y - v1.y ) * (v2.x - v1.x );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24722 var dotCA = (v.x - v2.x ) * (v2.y - v0.y ) + (v.y - v2.y ) * (v0.x - v2.x );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24723 if (dotAB > 0 || dotBC > 0 || dotCA > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24724 return null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24725 } else if (dotAB < 0 && dotBC < 0 && dotCA < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24726 return this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24727 } else if (dotAB == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24728 if (dotBC == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24729 return this.vertices[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24730 } else if (dotCA == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24731 return this.vertices[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24732 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24733 return this.edges[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24734 } else if (dotBC == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24735 if (dotCA == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24736 return this.vertices[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24737 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24738 return this.edges[1];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24739 } else if (dotCA == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24740 return this.edges[2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24741 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24742 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24743
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24744 function Clustering(xMin, yMin, xMax, yMax) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24745 this.triangles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24746 this.newTriangles = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24747 this.bbox = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24748 x1 : xMin,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24749 y1 : yMin,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24750 x2 : xMax,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24751 y2 : yMax
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24752 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24753 this.CreateBoundingTriangle();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24754 this.edges = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24755 this.vertices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24756 this.legalizes = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24757 this.collapses = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24758 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24759
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24760 Clustering.prototype.locate = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24761 if (this.boundingTriangle.descendants.length == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24762 return this.boundingTriangle;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24763 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24764 var triangles = this.boundingTriangle.descendants;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24765 while (true) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24766 for (var i = 0; i < triangles.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24767 var simplex = triangles[i].interior(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24768 if (simplex == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24769 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24770 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24771 if ( simplex instanceof Vertex || this.isLeaf(triangles[i])) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24772 return simplex;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24773 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24774 triangles = triangles[i].descendants;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24775 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24776 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24777 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24778 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24779
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24780 Clustering.prototype.legalize = function(v, e, t0_old) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24781 if (!e.v0.legal && !e.v1.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24782 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24783 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24784 this.legalizes++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24785 var flip = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24786 var t1_old, tr1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24787 if (e.leftFace == t0_old && e.rightFace.inCircumcircle(v)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24788 flip = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24789 t1_old = e.rightFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24790 } else if (e.rightFace == t0_old && e.leftFace.inCircumcircle(v)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24791 flip = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24792 t1_old = e.leftFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24793 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24794 if (flip) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24795 var tr0 = t0_old.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24796 var tr1 = t1_old.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24797 var e_flip = new Edge(tr0.u, tr1.u);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24798 var poly = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24799 poly.push(e.v0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24800 poly.push(e_flip.v0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24801 poly.push(e.v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24802 poly.push(e_flip.v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24803 if (!this.JordanTest(poly, e_flip)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24804 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24805 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24806 e.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24807 this.edges.push(e_flip);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24808 var t0_new = new Triangle([e_flip, tr0.e_p, tr1.e_s]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24809 var t1_new = new Triangle([e_flip, tr1.e_p, tr0.e_s]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24810 e_flip.setFaces(t0_new, t1_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24811 tr0.e_p.replaceFace(t0_old, t0_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24812 tr1.e_s.replaceFace(t1_old, t0_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24813 tr1.e_p.replaceFace(t1_old, t1_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24814 tr0.e_s.replaceFace(t0_old, t1_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24815 t0_old.descendants = [t0_new, t1_new];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24816 t1_old.descendants = [t0_new, t1_new];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24817 this.legalize(v, t0_new.edges[2], t0_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24818 this.legalize(v, t1_new.edges[1], t1_new);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24819 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24820 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24821
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24822 Clustering.prototype.add = function(v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24823 this.addVertex(v, this.locate(v));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24824 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24825
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24826 Clustering.prototype.addVertex = function(v, simplex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24827 if ( simplex instanceof Vertex) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24828 simplex.merge(simplex, v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24829 } else if ( simplex instanceof Edge) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24830 this.vertices.push(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24831 simplex.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24832 var tr0 = simplex.leftFace.getTriple(simplex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24833 var tr1 = simplex.rightFace.getTriple(simplex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24834 var e0 = new Edge(v, tr0.u);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24835 var e1 = new Edge(v, simplex.leftFace.getNext(tr0.u));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24836 var e2 = new Edge(v, tr1.u);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24837 var e3 = new Edge(v, simplex.rightFace.getNext(tr1.u));
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24838 var t0 = new Triangle([e0, tr0.e_p, e1]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24839 var t1 = new Triangle([e1, tr1.e_s, e2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24840 var t2 = new Triangle([e2, tr1.e_p, e3]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24841 var t3 = new Triangle([e3, tr0.e_s, e0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24842 simplex.leftFace.descendants = [t0, t3];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24843 simplex.rightFace.descendants = [t1, t2];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24844 this.edges.push(e0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24845 this.edges.push(e1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24846 this.edges.push(e2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24847 this.edges.push(e3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24848 e0.setFaces(t0, t3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24849 e1.setFaces(t0, t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24850 e2.setFaces(t1, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24851 e3.setFaces(t2, t3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24852 tr0.e_p.replaceFace(simplex.leftFace, t0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24853 tr1.e_s.replaceFace(simplex.rightFace, t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24854 tr1.e_p.replaceFace(simplex.rightFace, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24855 tr0.e_s.replaceFace(simplex.leftFace, t3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24856 this.legalize(v, tr0.e_p, t0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24857 this.legalize(v, tr1.e_s, t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24858 this.legalize(v, tr1.e_p, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24859 this.legalize(v, tr0.e_s, t3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24860 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24861 this.vertices.push(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24862 var e_i = new Edge(simplex.vertices[0], v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24863 var e_j = new Edge(simplex.vertices[1], v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24864 var e_k = new Edge(simplex.vertices[2], v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24865 this.edges.push(e_i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24866 this.edges.push(e_j);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24867 this.edges.push(e_k);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24868 var t0 = new Triangle([e_i, simplex.edges[0], e_j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24869 var t1 = new Triangle([e_j, simplex.edges[1], e_k]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24870 var t2 = new Triangle([e_k, simplex.edges[2], e_i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24871 e_i.setFaces(t0, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24872 e_j.setFaces(t0, t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24873 e_k.setFaces(t1, t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24874 simplex.replaceBy([t0, t1, t2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24875 this.legalize(v, simplex.edges[0], t0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24876 this.legalize(v, simplex.edges[1], t1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24877 this.legalize(v, simplex.edges[2], t2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24878 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24879 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24880
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24881 Clustering.prototype.isLeaf = function(t) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24882 return t.descendants.length == 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24883 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24884
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24885 Clustering.prototype.CreateBoundingTriangle = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24886 var dx = (this.bbox.x2 - this.bbox.x1 ) * 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24887 var dy = (this.bbox.y2 - this.bbox.y1 ) * 10;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24888 var v0 = new Vertex(this.bbox.x1 - dx, this.bbox.y1 - dy * 3);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24889 var v1 = new Vertex(this.bbox.x2 + dx * 3, this.bbox.y2 + dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24890 var v2 = new Vertex(this.bbox.x1 - dx, this.bbox.y2 + dy);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24891 var e0 = new Edge(v1, v0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24892 var e1 = new Edge(v0, v2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24893 var e2 = new Edge(v2, v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24894 v0.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24895 v1.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24896 v2.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24897 this.boundingTriangle = new Triangle([e0, e1, e2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24898 var inf = new Triangle([e0, e1, e2]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24899 e0.setFaces(this.boundingTriangle, inf);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24900 e1.setFaces(this.boundingTriangle, inf);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24901 e2.setFaces(this.boundingTriangle, inf);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24902 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24903
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24904 Clustering.prototype.mergeVertices = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24905 this.collapses++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24906 var s0 = e.v0.size;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24907 var s1 = e.v1.size;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24908 var x = (e.v0.x * s0 + e.v1.x * s1 ) / (s0 + s1 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24909 var y = (e.v0.y * s0 + e.v1.y * s1 ) / (s0 + s1 );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24910 var v = new Vertex(x, y, e.v0.elements.length, e.v0.binning);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24911 v.merge(e.v0, e.v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24912
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24913 e.v0.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24914 e.v1.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24915
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24916 var hole = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24917 var oldFacets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24918 e.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24919
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24920 var vertices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24921 var traverse = function(eLeft, eRight, triangle) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24922 eLeft.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24923 do {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24924 var triple;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24925 if (eLeft.leftFace == triangle) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24926 triple = eLeft.rightFace.getTriple(eLeft);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24927 oldFacets.push(eLeft.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24928 triple.e_s.removeFace(eLeft.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24929 triangle = eLeft.rightFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24930 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24931 triple = eLeft.leftFace.getTriple(eLeft);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24932 oldFacets.push(eLeft.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24933 triple.e_s.removeFace(eLeft.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24934 triangle = eLeft.leftFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24935 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24936 if (arrayIndex(hole, triple.e_s) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24937 hole.push(triple.e_s);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24938 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24939 vertices.push(triple.u);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24940 eLeft = triple.e_p;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24941 eLeft.legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24942 } while( eLeft != eRight );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24943 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24944 var tr0 = e.leftFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24945 var tr1 = e.rightFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24946 oldFacets.push(e.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24947 oldFacets.push(e.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24948 traverse(tr0.e_p, tr1.e_s, e.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24949 traverse(tr1.e_p, tr0.e_s, e.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24950
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24951 var hd = new Clustering(this.bbox.x1 - 10, this.bbox.y1 - 10, this.bbox.x2 + 10, this.bbox.y2 + 10);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24952 var hull = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24953 for (var i in hole ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24954 if (!(hole[i].leftFace == null && hole[i].rightFace == null)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24955 hull.push(hole[i].v0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24956 hull.push(hole[i].v1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24957 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24958 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24959 var hullVertices = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24960 var distinct = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24961 for (var i in vertices ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24962 if (arrayIndex(distinct, vertices[i]) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24963 hd.add(vertices[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24964 distinct.push(vertices[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24965 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24966 if (arrayIndex(hull, vertices[i]) != -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24967 hullVertices.push(vertices[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24968 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24969 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24970
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24971 var newFacets = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24972 var isBoundary = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24973 for (var i = 0; i < hole.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24974 if (hole[i].equals(e)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24975 return i;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24976 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24977 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24978 return -1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24979 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24980 var holeEdges = new Array(hole.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24981 var nonHoleEdges = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24982
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24983 for (var i = 0; i < hd.edges.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24984 var e = hd.edges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24985 var b = isBoundary(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24986 if (b != -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24987 if (!e.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24988 var t1 = e.leftFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24989 var t2 = e.rightFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24990 var edge = new Edge(t1.u, t2.u);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24991 for (var j = 0; j < hd.edges.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24992 if (hd.edges[j].equals(edge) && hd.edges[j].legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24993 hd.edges[j].legal = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24994 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24995 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24996 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24997 t1.e_p.setFace(e.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24998 t1.e_s.setFace(e.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
24999 t2.e_p.setFace(e.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25000 t2.e_s.setFace(e.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25001
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25002 e.legal = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25003 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25004 holeEdges[b] = e;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25005 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25006 nonHoleEdges.push(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25007 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25008 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25009
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25010 for (var i = 0; i < holeEdges.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25011 var e = holeEdges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25012 if (hole[i].leftFace == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25013 hole[i].leftFace = e.leftFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25014 hole[i].leftFace.replace(e, hole[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25015 if (arrayIndex(newFacets, hole[i].leftFace) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25016 newFacets.push(hole[i].leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25017 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25018 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25019 if (hole[i].rightFace == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25020 hole[i].rightFace = e.rightFace;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25021 hole[i].rightFace.replace(e, hole[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25022 if (arrayIndex(newFacets, hole[i].rightFace) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25023 newFacets.push(hole[i].rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25024 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25025 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25026 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25027
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25028 for (var i = 0; i < nonHoleEdges.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25029 var e = nonHoleEdges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25030 if (!e.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25031 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25032 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25033 if (this.JordanTest(hullVertices, e)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25034 this.edges.push(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25035 if (arrayIndex(newFacets, e.rightFace) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25036 newFacets.push(e.rightFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25037 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25038 if (arrayIndex(newFacets, e.leftFace) == -1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25039 newFacets.push(e.leftFace);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25040 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25041 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25042 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25043
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25044 for (var i in oldFacets ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25045 oldFacets[i].descendants = newFacets;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25046 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25047
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25048 for (var i = 0; i < newFacets.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25049 var simplex = newFacets[i].interior(v);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25050 if (simplex == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25051 continue;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25052 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25053 this.addVertex(v, simplex);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25054 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25055 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25056 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25057
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25058 return v;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25059
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25060 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25061
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25062 Clustering.prototype.JordanTest = function(pol, e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25063 var p = new Vertex((e.v0.x + e.v1.x) * 0.5, (e.v0.y + e.v1.y) * 0.5);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25064 var inside = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25065 var i, j = pol.length - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25066 for ( i = 0; i < pol.length; j = i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25067 var p1 = pol[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25068 var p2 = pol[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25069 if ((((p1.y <= p.y) && (p.y < p2.y)) || ((p2.y <= p.y) && (p.y < p1.y))) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x))
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25070 inside = !inside;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25071 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25072 return inside;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25073 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25074
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25075 Clustering.prototype.mergeForResolution = function(resolution, circleGap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25076 this.deleteEdges = new BinaryHeap(function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25077 return e.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25078 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25079 this.weightEdges(resolution, circleGap);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25080 var index = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25081 while (this.deleteEdges.size() > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25082 var e = this.deleteEdges.pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25083 if (e.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25084 var l = this.edges.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25085 var newVertex = this.mergeVertices(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25086 newVertex.CalculateRadius(resolution);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25087 for (var k = l; k < this.edges.length; k++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25088 var eNew = this.edges[k];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25089 if (eNew.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25090 eNew.weight = eNew.length / (eNew.v0.radius + eNew.v1.radius + circleGap * resolution );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25091 if (eNew.weight < 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25092 this.deleteEdges.push(eNew);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25093 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25094 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25095 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25096 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25097 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25098 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25099
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25100 Clustering.prototype.weightEdges = function(resolution, circleGap) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25101 for (var i = 0; i < this.vertices.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25102 if (this.vertices[i].legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25103 this.vertices[i].CalculateRadius(resolution);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25104 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25105 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25106 var newEdges = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25107 for (var i = 0; i < this.edges.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25108 var e = this.edges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25109 if (e.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25110 if (!e.v0.legal || !e.v1.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25111 e.weight = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25112 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25113 e.weight = e.length / (e.v0.radius + e.v1.radius + circleGap * resolution );
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25114 if (e.weight < 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25115 this.deleteEdges.push(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25116 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25117 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25118 newEdges.push(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25119 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25120 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25121 this.edges = newEdges;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25122 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25123
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25124 Clustering.prototype.ValidityTest = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25125 console.info("Test 1: Valid Delaunay ...");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25126 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25127 var leafs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25128 var triangles = this.boundingTriangle.descendants;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25129 var j = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25130 while( triangles.length > j ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25131 var t = triangles[j];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25132 if( t.taken == undefined ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25133 t.taken = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25134 if( this.isLeaf(t) ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25135 leafs.push(t);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25136 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25137 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25138 triangles = triangles.concat(t.descendants);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25139 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25140 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25141 j++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25142 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25143 console.info(" Number of Triangles: "+leafs.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25144
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25145 var c = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25146 for( i in this.edges ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25147 if( this.edges[i].legal ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25148 c++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25149 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25150 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25151 console.info(" Number of Edges: "+c);*/
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25152 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25153
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25154 for( var i=0; i<leafs.length; i++ ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25155 for( var j=0; j<vertices.length; j++ ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25156 if( !leafs[i].contains(vertices[j]) && leafs[i].inCircumcircle(vertices[j]) ){
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25157 console.info(leafs[i],vertices[j]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25158
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25159 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25160 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25161 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25162 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25163
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25164 //console.info("Test 2: Edges Facets (null) ...");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25165 for (i in this.edges ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25166 var e = this.edges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25167 if (e.leftFace == null || e.rightFace == null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25168 console.info(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25169 alert();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25170 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25171 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25172
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25173 //console.info("Test 3: Edges Facets ...");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25174 var leftOf = function(v1, v2, v) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25175 var x2 = v1.x - v2.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25176 var x3 = v1.x - v.x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25177 var y2 = v1.y - v2.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25178 var y3 = v1.y - v.y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25179 if (x2 * y3 - y2 * x3 < 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25180 return true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25181 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25182 return false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25183 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25184 var c = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25185 for (i in this.edges ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25186 var e = this.edges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25187 var t1 = e.leftFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25188 var t2 = e.rightFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25189 if (e.v0.y == e.v1.y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25190 if (t1.u.y > t2.u.y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25191 console.info("equal y conflict ...");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25192 console.info(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25193 alert();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25194 c++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25195 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25196 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25197 var v1, v2;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25198 if (e.v0.y > e.v1.y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25199 v1 = e.v0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25200 v2 = e.v1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25201 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25202 v1 = e.v1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25203 v2 = e.v0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25204 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25205 if (!leftOf(v1, v2, t1.u)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25206 console.info("left right conflict ... left is right");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25207 console.info(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25208 alert();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25209 c++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25210 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25211 if (leftOf(v1, v2, t2.u)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25212 console.info("left right conflict ... right is left");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25213 console.info(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25214 alert();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25215 c++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25216 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25217 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25218 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25219 //console.info("Number of Edges: "+this.edges.length);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25220 //console.info("Number of Conflicts: "+c);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25221
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25222 for (i in this.edges ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25223 if (this.edges[i].legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25224 var e = this.edges[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25225 var tr0 = e.leftFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25226 var tr1 = e.rightFace.getTriple(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25227 if (!tr0.e_p.legal || !tr0.e_s.legal || !tr1.e_p.legal || !tr1.e_s.legal) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25228 console.info(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25229 console.info("conflict in edge continuity");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25230 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25231 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25232 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25233 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25234
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25235 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25236 function BinaryHeap(scoreFunction) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25237 this.content = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25238 this.scoreFunction = scoreFunction;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25239 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25240
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25241 BinaryHeap.prototype = {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25242 push : function(element) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25243 // Add the new element to the end of the array.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25244 this.content.push(element);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25245 // Allow it to bubble up.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25246 this.bubbleUp(this.content.length - 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25247 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25248
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25249 pop : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25250 // Store the first element so we can return it later.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25251 var result = this.content[0];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25252 // Get the element at the end of the array.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25253 var end = this.content.pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25254 // If there are any elements left, put the end element at the
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25255 // start, and let it sink down.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25256 if (this.content.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25257 this.content[0] = end;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25258 this.sinkDown(0);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25259 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25260 return result;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25261 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25262
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25263 remove : function(node) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25264 var len = this.content.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25265 // To remove a value, we must search through the array to find
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25266 // it.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25267 for (var i = 0; i < len; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25268 if (this.content[i] == node) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25269 // When it is found, the process seen in 'pop' is repeated
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25270 // to fill up the hole.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25271 var end = this.content.pop();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25272 if (i != len - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25273 this.content[i] = end;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25274 if (this.scoreFunction(end) < this.scoreFunction(node))
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25275 this.bubbleUp(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25276 else
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25277 this.sinkDown(i);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25278 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25279 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25280 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25281 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25282 throw new Error("Node not found.");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25283 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25284
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25285 size : function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25286 return this.content.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25287 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25288
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25289 bubbleUp : function(n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25290 // Fetch the element that has to be moved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25291 var element = this.content[n];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25292 // When at 0, an element can not go up any further.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25293 while (n > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25294 // Compute the parent element's index, and fetch it.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25295 var parentN = Math.floor((n + 1) / 2) - 1, parent = this.content[parentN];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25296 // Swap the elements if the parent is greater.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25297 if (this.scoreFunction(element) < this.scoreFunction(parent)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25298 this.content[parentN] = element;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25299 this.content[n] = parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25300 // Update 'n' to continue at the new position.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25301 n = parentN;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25302 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25303 // Found a parent that is less, no need to move it further.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25304 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25305 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25306 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25307 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25308 },
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25309
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25310 sinkDown : function(n) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25311 // Look up the target element and its score.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25312 var length = this.content.length, element = this.content[n], elemScore = this.scoreFunction(element);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25313
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25314 while (true) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25315 // Compute the indices of the child elements.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25316 var child2N = (n + 1) * 2, child1N = child2N - 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25317 // This is used to store the new position of the element,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25318 // if any.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25319 var swap = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25320 // If the first child exists (is inside the array)...
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25321 if (child1N < length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25322 // Look it up and compute its score.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25323 var child1 = this.content[child1N], child1Score = this.scoreFunction(child1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25324 // If the score is less than our element's, we need to swap.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25325 if (child1Score < elemScore)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25326 swap = child1N;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25327 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25328 // Do the same checks for the other child.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25329 if (child2N < length) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25330 var child2 = this.content[child2N], child2Score = this.scoreFunction(child2);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25331 if (child2Score < (swap == null ? elemScore : child1Score))
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25332 swap = child2N;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25333 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25334
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25335 // If the element needs to be moved, swap it, and continue.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25336 if (swap != null) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25337 this.content[n] = this.content[swap];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25338 this.content[swap] = element;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25339 n = swap;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25340 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25341 // Otherwise, we are done.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25342 else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25343 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25344 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25345 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25346 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25347 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25348 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25349 * Dropdown.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25350 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25351 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25352 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25353 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25354 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25355 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25356 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25357 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25358 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25359 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25360 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25361 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25362 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25363 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25364 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25365 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25366 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25367 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25368
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25369 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25370 * @class Dropdown
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25371 * Implementation for Dropdown box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25372 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25373 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25374 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25375 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25376 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25377 * @param {HTML object} parent parent div for the dropdown box
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25378 * @param {Array} elements list of dropdown entries
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25379 * @param {String} title dropdown button title
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25380 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25381 function Dropdown(parent, elements, title) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25382
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25383 var dropdown = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25384 this.visibility = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25385 this.div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25386 this.div.setAttribute('class', 'dropdown');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25387
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25388 this.selection = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25389 this.selection.setAttribute('class', 'dropdownSelection');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25390 parent.appendChild(this.div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25391
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25392 var leftBorder = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25393 leftBorder.setAttribute('class', 'dropdownLeft');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25394 this.div.appendChild(leftBorder);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25395
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25396 this.div.appendChild(this.selection);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25397
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25398 var dropdownButton = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25399 this.div.appendChild(dropdownButton);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25400 if (elements.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25401 dropdownButton.setAttribute('class', 'dropdownButtonEnabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25402 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25403 dropdownButton.setAttribute('class', 'dropdownButtonDisabled');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25404 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25405 dropdownButton.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25406 if (elements.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25407 dropdown.changeVisibility();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25408 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25409 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25410 dropdownButton.title = title;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25411
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25412 this.getValue = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25413 return this.selectedEntry.innerHTML;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25414 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25415
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25416 var entryMenu = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25417 entryMenu.setAttribute('class', 'dropdownMenu');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25418 this.div.appendChild(entryMenu);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25419
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25420 var entries = document.createElement("dl");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25421 var addEntry = function(e) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25422 var entry = document.createElement("dt");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25423 entry.innerHTML = e.name;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25424 entry.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25425 e.onclick();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25426 dropdown.changeVisibility();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25427 dropdown.changeEntries(e);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25428 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25429 entries.appendChild(entry);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25430 e.entry = entry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25431 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25432 for (var i = 0; i < elements.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25433 addEntry(elements[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25434 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25435 entryMenu.appendChild(entries);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25436 this.selection.style.width = entryMenu.offsetWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25437 entryMenu.style.width = (entryMenu.offsetWidth + leftBorder.offsetWidth + dropdownButton.offsetWidth - 2) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25438 this.div.style.maxHeight = this.div.offsetHeight + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25439
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25440 entryMenu.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25441
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25442 this.setEntry = function(index) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25443 if ( typeof (index) == "undefined") {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25444 if ((elements) && elements.length > 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25445 this.changeEntries(elements[0]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25446 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25447 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25448 this.changeEntries(elements[index]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25449 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25450 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25451
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25452 this.changeEntries = function(element) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25453 if (this.selectedEntry) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25454 this.selectedEntry.setAttribute('class', 'dropdownUnselectedEntry');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25455 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25456 this.selectedEntry = element.entry;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25457 this.selectedEntry.setAttribute('class', 'dropdownSelectedEntry');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25458 this.selection.innerHTML = "<div style='display:inline-block;vertical-align:middle;'>" + element.name + "</div>";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25459 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25460
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25461 this.changeVisibility = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25462 this.visibility = !this.visibility;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25463 if (this.visibility) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25464 entryMenu.style.display = "block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25465 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25466 entryMenu.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25467 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25468 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25469 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25470 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25471 * MapZoomSlider.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25472 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25473 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25474 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25475 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25476 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25477 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25478 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25479 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25480 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25481 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25482 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25483 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25484 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25485 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25486 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25487 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25488 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25489 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25490
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25491 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25492 * @class MapZoomSlider
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25493 * GeoTemCo style for map zoom control
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25494 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25495 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25496 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25497 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25498 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25499 function MapZoomSlider(parent, orientation) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25500
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25501 this.parent = parent;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25502
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25503 var zs = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25504 this.div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25505 this.div.setAttribute('class', 'sliderStyle-' + orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25506
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25507 var sliderContainer = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25508 sliderContainer.setAttribute('class', 'zoomSliderContainer-' + orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25509 var sliderDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25510 sliderDiv.tabIndex = 1;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25511 var sliderInputDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25512 sliderDiv.appendChild(sliderInputDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25513 sliderContainer.appendChild(sliderDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25514 this.slider = new Slider(sliderDiv, sliderInputDiv, orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25515 this.div.appendChild(sliderContainer);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25516
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25517 var zoomIn = document.createElement("img");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25518 zoomIn.src = GeoTemConfig.path + "zoom_in.png";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25519 zoomIn.setAttribute('class', 'zoomSliderIn-' + orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25520 zoomIn.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25521 zs.parent.zoom(1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25522 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25523 this.div.appendChild(zoomIn);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25524
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25525 var zoomOut = document.createElement("img");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25526 zoomOut.src = GeoTemConfig.path + "zoom_out.png";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25527 zoomOut.setAttribute('class', 'zoomSliderOut-' + orientation);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25528 zoomOut.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25529 zs.parent.zoom(-1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25530 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25531 this.div.appendChild(zoomOut);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25532
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25533 this.slider.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25534 console.info(zs.slider.getValue());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25535 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25536
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25537 this.slider.handle.onmousedown = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25538 var oldValue = zs.slider.getValue();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25539 document.onmouseup = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25540 if (!zs.parent.zoom((zs.slider.getValue() - oldValue) / zs.max * zs.levels)) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25541 zs.setValue(oldValue);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25542 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25543 document.onmouseup = null;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25544 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25545 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25546
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25547 this.setValue = function(value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25548 this.slider.setValue(value / this.levels * this.max);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25549 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25550
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25551 this.setMaxAndLevels = function(max, levels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25552 this.max = max;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25553 this.levels = levels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25554 this.slider.setMaximum(max);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25555 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25556 // this.setMaxAndLevels(1000,parent.openlayersMap.getNumZoomLevels());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25557 // this.setValue(parent.openlayersMap.getZoom());
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25558
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25559 this.setLanguage = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25560 zoomIn.title = GeoTemConfig.getString('zoomIn');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25561 zoomOut.title = GeoTemConfig.getString('zoomOut');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25562 this.slider.handle.title = GeoTemConfig.getString('zoomSlider');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25563 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25564 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25565 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25566 * MapPopup.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25567 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25568 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25569 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25570 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25571 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25572 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25573 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25574 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25575 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25576 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25577 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25578 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25579 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25580 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25581 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25582 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25583 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25584 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25585
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25586 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25587 * @class MapPopup
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25588 * map popup implementaion
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25589 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25590 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25591 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25592 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25593 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25594 function MapPopup(parent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25595
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25596 this.parentDiv = parent.gui.mapWindow;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25597
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25598 this.initialize = function(x, y, onclose) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25599
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25600 var popup = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25601 this.x = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25602 this.y = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25603
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25604 this.popupDiv = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25605 this.popupDiv.setAttribute('class', 'ddbPopupDiv');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25606 this.parentDiv.appendChild(this.popupDiv);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25607
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25608 this.cancel = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25609 this.cancel.setAttribute('class', 'ddbPopupCancel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25610 this.cancel.title = GeoTemConfig.getString('close');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25611 this.cancel.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25612 if ( typeof onclose != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25613 onclose();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25614 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25615 popup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25616 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25617
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25618 this.input = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25619 this.input.style.maxWidth = Math.floor(this.parentDiv.offsetWidth * 0.75) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25620 this.input.style.maxHeight = Math.floor(this.parentDiv.offsetHeight * 0.75) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25621 this.input.setAttribute('class', 'ddbPopupInput');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25622
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25623 this.popupDiv.appendChild(this.input);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25624 this.popupDiv.appendChild(this.cancel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25625
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25626 var peak = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25627 peak.setAttribute('class', 'popupPeak');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25628 this.popupDiv.appendChild(peak);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25629 var topRight = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25630 topRight.setAttribute('class', 'popupTopRight');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25631 this.popupDiv.appendChild(topRight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25632 var bottomRight = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25633 bottomRight.setAttribute('class', 'popupBottomRight');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25634 this.popupDiv.appendChild(bottomRight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25635 this.popupRight = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25636 this.popupRight.setAttribute('class', 'popupRight');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25637 this.popupDiv.appendChild(this.popupRight);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25638 this.popupBottom = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25639 this.popupBottom.setAttribute('class', 'popupBottom');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25640 this.popupDiv.appendChild(this.popupBottom);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25641
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25642 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25643
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25644 this.setContent = function(content) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25645 $(this.input).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25646 this.visible = true;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25647 $(this.input).append(content);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25648 this.decorate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25649 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25650
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25651 this.reset = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25652 $(this.popupDiv).remove();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25653 this.visible = false;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25654 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25655
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25656 this.decorate = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25657 this.popupRight.style.height = (this.popupDiv.offsetHeight - 14) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25658 this.popupBottom.style.width = (this.popupDiv.offsetWidth - 22) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25659 this.left = this.x + 9;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25660 this.top = this.y - 10 - this.popupDiv.offsetHeight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25661 this.popupDiv.style.left = this.left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25662 this.popupDiv.style.top = this.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25663 var shiftX = 0, shiftY = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25664 if (this.popupDiv.offsetTop < parent.gui.headerHeight + 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25665 shiftY = -1 * (parent.gui.headerHeight + 10 - this.popupDiv.offsetTop);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25666 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25667 if (this.popupDiv.offsetLeft + this.popupDiv.offsetWidth > parent.gui.headerWidth - 10) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25668 shiftX = -1 * (parent.gui.headerWidth - 10 - this.popupDiv.offsetLeft - this.popupDiv.offsetWidth);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25669 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25670 parent.shift(shiftX, shiftY);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25671 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25672
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25673 this.shift = function(x, y) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25674 this.left = this.left - this.x + x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25675 this.top = this.top - this.y + y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25676 this.x = x;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25677 this.y = y;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25678 if (this.left + this.popupDiv.offsetWidth > this.parentDiv.offsetWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25679 this.popupDiv.style.left = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25680 this.popupDiv.style.right = (this.parentDiv.offsetWidth - this.left - this.popupDiv.offsetWidth) + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25681 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25682 this.popupDiv.style.right = 'auto';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25683 this.popupDiv.style.left = this.left + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25684 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25685 this.popupDiv.style.top = this.top + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25686 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25687 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25688 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25689 * PlacenamePopup.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25690 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25691 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25692 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25693 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25694 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25695 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25696 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25697 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25698 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25699 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25700 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25701 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25702 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25703 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25704 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25705 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25706 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25707 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25708
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25709 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25710 * @class PlacenamePopup
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25711 * specific map popup for showing and interacting on placename labels
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25712 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25713 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25714 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25715 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25716 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25717 function PlacenamePopup(parent) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25718
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25719 this.parentDiv = parent.gui.mapWindow;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25720
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25721 this.createPopup = function(x, y, labels) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25722 this.labels = labels;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25723 var pnPopup = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25724 var popup = new MapPopup(parent);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25725 var onClose = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25726 parent.deselection();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25727 pnPopup.reset();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25728 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25729 popup.initialize(x, y, onClose);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25730 $.extend(this, popup);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25731
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25732 this.content = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25733 this.inner = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25734
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25735 this.resultsLabel = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25736 this.resultsLabel.setAttribute('class', 'popupDDBResults');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25737 this.content.appendChild(this.resultsLabel);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25738 this.backward = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25739 this.backward.setAttribute('class', 'prevItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25740 this.content.appendChild(this.backward);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25741 this.backward.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25742 pnPopup.descriptionIndex--;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25743 pnPopup.showDescription();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25744 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25745
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25746 this.number = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25747 this.content.appendChild(this.number);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25748 this.number.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25749 this.number.style.fontSize = '13px';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25750
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25751 this.forward = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25752 this.forward.setAttribute('class', 'nextItem');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25753 this.content.appendChild(this.forward);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25754 this.forward.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25755 pnPopup.descriptionIndex++;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25756 pnPopup.showDescription();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25757 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25758 if (parent.options.showDescriptions) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25759 this.descriptions = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25760 this.descriptions.setAttribute('class', 'descriptions');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25761 this.descriptions.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25762 pnPopup.switchToDescriptionMode();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25763 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25764 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25765
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25766 this.back = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25767 this.back.setAttribute('class', 'back');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25768 this.popupDiv.appendChild(this.back);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25769 this.back.onclick = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25770 pnPopup.back.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25771 pnPopup.backward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25772 pnPopup.forward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25773 pnPopup.number.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25774 pnPopup.showLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25775 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25776
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25777 this.content.appendChild(this.inner);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25778 this.listLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25779 this.showLabels();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25780
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25781 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25782
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25783 this.switchToDescriptionMode = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25784 this.descriptionIndex = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25785 this.descriptionContents = this.activeLabel.descriptions;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25786 this.number.style.display = 'inline-block';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25787 this.inner.style.minWidth = "300px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25788 this.showDescription();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25789 this.count = this.activeLabel.weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25790 this.setCount();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25791 this.back.style.display = "inline-block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25792 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25793
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25794 this.showDescription = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25795 $(this.inner).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25796 this.inner.appendChild(this.descriptionContents[this.descriptionIndex]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25797 this.setContent(this.content);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25798 if (this.descriptionContents.length == 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25799 this.backward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25800 this.forward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25801 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25802 if (this.descriptionIndex == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25803 this.backward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25804 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25805 this.backward.style.display = "inline-block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25806 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25807 if (this.descriptionIndex == this.descriptionContents.length - 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25808 this.forward.style.display = "none";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25809 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25810 this.forward.style.display = "inline-block";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25811 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25812 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25813 if (this.descriptionContents.length > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25814 this.number.innerHTML = "#" + (this.descriptionIndex + 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25815 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25816 this.number.style.display = 'none';
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25817 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25818 this.decorate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25819 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25820
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25821 this.setCount = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25822 var c = this.count;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25823 if (c > 1) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25824 this.resultsLabel.innerHTML = c + " " + GeoTemConfig.getString('results');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25825 } else {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25826 this.resultsLabel.innerHTML = c + " " + GeoTemConfig.getString('result');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25827 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25828 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25829
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25830 this.listLabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25831 var pnPopup = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25832 this.labelDivs = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25833 this.labelCount = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25834 this.labelsWidth = 0;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25835 for (var i = 0; i < this.labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25836 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25837 var content = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25838 this.labels[i].allStyle += "position: relative; white-space: nowrap;";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25839 content.appendChild(this.labels[i].div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25840 content.setAttribute('class', 'ddbPopupLabel');
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25841 div.appendChild(content);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25842 this.labels[i].div.setAttribute('style', this.labels[i].allStyle + "" + this.labels[i].selectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25843 this.input.appendChild(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25844 if (this.input.offsetWidth > this.labelsWidth) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25845 this.labelsWidth = this.input.offsetWidth;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25846 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25847 this.labels[i].div.setAttribute('style', this.labels[i].allStyle + "" + this.labels[i].unselectedStyle);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25848 this.labelDivs.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25849 var descriptions = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25850 for (var j = 0; j < this.labels[i].elements.length; j++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25851 var div = document.createElement("div");
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25852 div.innerHTML = this.labels[i].elements[j].description;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25853 descriptions.push(div);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25854 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25855 this.labels[i].descriptions = descriptions;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25856 if (this.labels[i].place != "all" || i == 0) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25857 this.labelCount += this.labels[i].weight;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25858 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25859 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25860 if ( typeof this.descriptions != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25861 this.labelsWidth += 20;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25862 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25863 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25864
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25865 this.showLabels = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25866 $(this.inner).empty();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25867 this.count = this.labelCount;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25868 this.setCount();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25869 for (var i = 0; i < this.labelDivs.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25870 this.inner.appendChild(this.labelDivs[i]);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25871 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25872 this.inner.style.width = this.labelsWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25873 this.inner.style.minWidth = this.labelsWidth + "px";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25874 this.setContent(this.content);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25875 this.decorate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25876 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25877
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25878 this.showLabelContent = function(label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25879 for (var i = 0; i < this.labels.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25880 if (this.labels[i] == label) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25881 this.activeLabel = this.labels[i];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25882 if ( typeof this.descriptions != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25883 this.labelDivs[i].appendChild(this.descriptions);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25884 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25885 this.decorate();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25886 break;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25887 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25888 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25889 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25890
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25891 this.setLanguage = function(language) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25892 this.language = language;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25893 if (this.visible) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25894 this.updateTexts();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25895 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25896 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25897 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25898 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25899 * Dropdown.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25900 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25901 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25902 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25903 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25904 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25905 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25906 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25907 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25908 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25909 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25910 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25911 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25912 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25913 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25914 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25915 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25916 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25917 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25918
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25919 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25920 * @class Publisher
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25921 * Publish/Subscribe mechanism
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25922 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25923 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25924 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25925 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25926 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25927 if ( typeof Publisher == 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25928
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25929 Publisher = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25930
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25931 var topics = new Array();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25932
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25933 this.Get = function(topic) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25934 var value = this[topic];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25935 if (!value) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25936 value = this[topic] = [];
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25937 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25938 return value;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25939 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25940
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25941 this.Publish = function(topic, data, publisher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25942 var subscribers = this.Get(topic);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25943 for (var i = 0; i < subscribers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25944 if (publisher == null || subscribers[i].client != publisher) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25945 subscribers[i].callback(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25946 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25947 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25948 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25949
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25950 this.Subscribe = function(topic, subscriber, callback) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25951 var subscribers = this.Get(topic);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25952 subscribers.push({
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25953 client : subscriber,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25954 callback : callback
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25955 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25956 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25957
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25958 this.Unsubscribe = function(topic, unsubscriber) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25959 var subscribers = this.Get(topic);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25960 for (var i = 0; i < subscribers.length; i++) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25961 if (subscribers[i].client == unsubscriber) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25962 subscribers.splice(i, 1);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25963 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25964 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25965 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25966 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25967
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25968 return this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25969
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25970 }();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25971
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25972 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25973 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25974 * WidgetWrapper.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25975 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25976 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25977 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25978 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25979 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25980 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25981 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25982 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25983 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25984 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25985 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25986 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25987 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25988 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25989 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25990 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25991 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25992 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25993
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25994 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25995 * @class WidgetWrapper
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25996 * Interface-like implementation for widgets interaction to each other; aimed to be modified for dynamic data sources
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25997 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25998 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
25999 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26000 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26001 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26002 * @param {Object} widget either a map, time or table widget
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26003 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26004 function WidgetWrapper() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26005
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26006 var wrapper = this;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26007
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26008 this.setWidget = function(widget) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26009 this.widget = widget;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26010 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26011
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26012 this.display = function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26013 if ( data instanceof Array) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26014 GeoTemConfig.datasets = data.length;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26015 if ( typeof wrapper.widget != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26016 this.widget.initWidget(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26017 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26018 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26019 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26020
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26021 Publisher.Subscribe('highlight', this, function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26022 if (data == undefined) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26023 return;
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26024 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26025 if ( typeof wrapper.widget != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26026 wrapper.widget.highlightChanged(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26027 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26028 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26029
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26030 Publisher.Subscribe('selection', this, function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26031 if ( typeof wrapper.widget != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26032 wrapper.widget.selectionChanged(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26033 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26034 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26035
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26036 Publisher.Subscribe('filter', this, function(data) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26037 wrapper.display(data);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26038 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26039
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26040 Publisher.Subscribe('rise', this, function(id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26041 if ( typeof wrapper.widget != 'undefined' && typeof wrapper.widget.riseLayer != 'undefined') {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26042 wrapper.widget.riseLayer(id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26043 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26044 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26045
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26046 Publisher.Subscribe('resizeWidget', this, function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26047 if ( typeof wrapper.widget != 'undefined' && typeof wrapper.widget.gui != 'undefined' && typeof wrapper.widget.gui.resize != 'undefined' ) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26048 wrapper.widget.gui.resize();
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26049 }
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26050 });
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26051
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26052 this.triggerRefining = function(datasets) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26053 Publisher.Publish('filter', datasets, null);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26054 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26055
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26056 this.triggerSelection = function(selectedObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26057 Publisher.Publish('selection', selectedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26058 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26059
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26060 this.triggerHighlight = function(highlightedObjects) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26061 Publisher.Publish('highlight', highlightedObjects, this);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26062 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26063
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26064 this.triggerRise = function(id) {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26065 Publisher.Publish('rise', id);
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26066 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26067
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26068 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26069 /*
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26070 * final.js
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26071 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26072 * Copyright (c) 2012, Stefan Jänicke. All rights reserved.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26073 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26074 * This library is free software; you can redistribute it and/or
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26075 * modify it under the terms of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26076 * License as published by the Free Software Foundation; either
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26077 * version 3 of the License, or (at your option) any later version.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26078 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26079 * This library is distributed in the hope that it will be useful,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26080 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26081 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26082 * Lesser General Public License for more details.
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26083 *
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26084 * You should have received a copy of the GNU Lesser General Public
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26085 * License along with this library; if not, write to the Free Software
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26086 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26087 * MA 02110-1301 USA
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26088 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26089
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26090 /**
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26091 * code which is included after all other sources have been included for the minified version
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26092 * @author Stefan Jänicke (stjaenicke@informatik.uni-leipzig.de)
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26093 * @release 1.0
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26094 * @release date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26095 * @version date: 2012-07-27
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26096 */
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26097
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26098 OpenLayers.Util.getImagesLocation = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26099 return GeoTemCoMinifier_urlPrefix + "lib/openlayers/img/";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26100 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26101
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26102 OpenLayers._getScriptLocation = function() {
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26103 return GeoTemCoMinifier_urlPrefix + "lib/openlayers/";
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26104 };
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26105
2715bff4628d Files for JS-viewer (GeoTemCo)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff changeset
26106 GeoTemConfig.configure(GeoTemCoMinifier_urlPrefix);