function $A(a){if(!a)return[];if("toArray"in Object(a))return a.toArray();var b=a.length||0,c=new Array(b);while(b--)c[b]=a[b];return c}function $w(a){return Object.isString(a)?(a=a.strip(),a?a.split(/\s+/):[]):[]}function $H(a){return new Hash(a)}function $R(a,b,c){return new ObjectRange(a,b,c)}function $(a){if(arguments.length>1){for(var b=0,c=[],d=arguments.length;b<d;b++)c.push($(arguments[b]));return c}return Object.isString(a)&&(a=document.getElementById(a)),Element.extend(a)}SeaMap={},window.dhtmlHistory={isIE:!1,isOpera:!1,isSafari:!1,isKonquerer:!1,isGecko:!1,isSupported:!1,create:function(a){var b=this,c=navigator.userAgent.toLowerCase(),d=navigator.platform.toLowerCase(),e=navigator.vendor||"";e==="KDE"?(this.isKonqueror=!0,this.isSupported=!1):typeof window.opera!="undefined"?(this.isOpera=!0,this.isSupported=!0):typeof document.all!="undefined"?(this.isIE=!0,this.isSupported=!0):e.indexOf("Apple Computer, Inc.")>-1&&parseFloat(navigator.version)<3?(this.isSafari=!0,this.isSupported=d.indexOf("mac")>-1):c.indexOf("gecko")!=-1&&(this.isGecko=!0,this.isSupported=!0),window.historyStorage.setup(a),this.isSafari?this.createSafari():this.isOpera&&this.createOpera();var f=this.getCurrentLocation();this.currentLocation=f,this.isIE&&this.createIE(f);var g=function(){b.firstLoad=null};this.addEventListener(window,"unload",g),this.isIE?this.ignoreLocationChange=!0:historyStorage.hasKey(this.PAGELOADEDSTRING)?(this.ignoreLocationChange=!1,this.fireOnNewListener=!0):(this.ignoreLocationChange=!0,this.firstLoad=!0,historyStorage.put(this.PAGELOADEDSTRING,!0));var h=function(){b.checkLocation()};setInterval(h,100)},initialize:function(){this.isIE&&(historyStorage.hasKey(this.PAGELOADEDSTRING)?(this.fireOnNewListener=!0,this.firstLoad=!1):(this.fireOnNewListener=!1,this.firstLoad=!0,historyStorage.put(this.PAGELOADEDSTRING,!0)))},addListener:function(a){this.listener=a,this.fireOnNewListener&&(this.fireHistoryEvent(this.currentLocation),this.fireOnNewListener=!1)},addEventListener:function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,function(){c(window.event)})},add:function(a,b){if(this.isSafari)a=this.removeHash(a),historyStorage.put(a,b),this.currentLocation=a,window.location.hash=a,this.putSafariState(a);else{var c=this,d=function(){c.currentWaitTime>0&&(c.currentWaitTime=c.currentWaitTime-c.waitTime),a=c.removeHash(a);if(document.getElementById(a)&&c.debugMode){var d="Exception: History locations can not have the same value as _any_ IDs that might be in the document, due to a bug in IE; please ask the developer to choose a history location that does not match any HTML IDs in this document. The following ID is already taken and cannot be a location: "+a;throw new Error(d)}historyStorage.put(a,b),c.ignoreLocationChange=!0,c.ieAtomicLocationChange=!0,c.currentLocation=a,window.location.hash=a,c.isIE&&(c.iframe.src="libs/rsh/blank.html?"+a),c.ieAtomicLocationChange=!1};window.setTimeout(d,this.currentWaitTime),this.currentWaitTime=this.currentWaitTime+this.waitTime}},isFirstLoad:function(){return this.firstLoad},getVersion:function(){return"0.6"},getCurrentLocation:function(){var a=this.isSafari?this.getSafariState():this.getCurrentHash();return a},getCurrentHash:function(){var a=window.location.href,b=a.indexOf("#");return b>=0?a.substr(b+1):""},PAGELOADEDSTRING:"DhtmlHistory_pageLoaded",listener:null,waitTime:200,currentWaitTime:0,currentLocation:null,iframe:null,safariHistoryStartPoint:null,safariStack:null,safariLength:null,ignoreLocationChange:null,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,createIE:function(a){this.waitTime=400;var b=historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles,c="rshHistoryFrame",d='<iframe frameborder="0" id="'+c+'" style="'+b+'" src="libs/rsh/blank.html?'+a+'"></iframe>';document.write(d),this.iframe=document.getElementById(c)},createOpera:function(){this.waitTime=400;var a='<img src="javascript:location.href=\'javascript:dhtmlHistory.checkLocation();\';" style="'+historyStorage.hideStyles+'" />';document.write(a)},createSafari:function(){var a="rshSafariForm",b="rshSafariStack",c="rshSafariLength",d=historyStorage.debugMode?historyStorage.showStyles:historyStorage.hideStyles,e=historyStorage.debugMode?"width:800px;height:20px;border:1px solid black;margin:0;padding:0;":historyStorage.hideStyles,f='<form id="'+a+'" style="'+d+'">'+'<input type="text" style="'+e+'" id="'+b+'" value="[]"/>'+'<input type="text" style="'+e+'" id="'+c+'" value=""/>'+"</form>";document.write(f),this.safariStack=document.getElementById(b),this.safariLength=document.getElementById(c),historyStorage.hasKey(this.PAGELOADEDSTRING)?this.safariHistoryStartPoint=this.safariLength.value:(this.safariHistoryStartPoint=history.length,this.safariLength.value=this.safariHistoryStartPoint)},getSafariStack:function(){var a=this.safariStack.value;return historyStorage.fromJSON(a)},getSafariState:function(){var a=this.getSafariStack(),b=a[history.length-this.safariHistoryStartPoint-1];return b},putSafariState:function(a){var b=this.getSafariStack();b[history.length-this.safariHistoryStartPoint]=a,this.safariStack.value=historyStorage.toJSON(b)},fireHistoryEvent:function(a){var b=historyStorage.get(a);this.listener.call(null,a,b)},checkLocation:function(){if(!this.isIE&&this.ignoreLocationChange){this.ignoreLocationChange=!1;return}if(!this.isIE&&this.ieAtomicLocationChange)return;var a=this.getCurrentLocation();if(a==this.currentLocation)return;this.ieAtomicLocationChange=!0;if(this.isIE&&this.getIframeHash()!=a)this.iframe.src="libs/rsh/blank.html?"+a;else if(this.isIE)return;this.currentLocation=a,this.ieAtomicLocationChange=!1,this.fireHistoryEvent(a)},getIframeHash:function(){var a=this.iframe.contentWindow.document,b=String(a.location.search);return b.length==1&&b.charAt(0)=="?"?b="":b.length>=2&&b.charAt(0)=="?"&&(b=b.substring(1)),b},removeHash:function(a){var b;return a===null||a===undefined?b=null:a===""?b="":a.length==1&&a.charAt(0)=="#"?b="":a.length>1&&a.charAt(0)=="#"?b=a.substring(1):b=a,b},iframeLoaded:function(a){if(this.ignoreLocationChange){this.ignoreLocationChange=!1;return}var b=String(a.search);b.length==1&&b.charAt(0)=="?"?b="":b.length>=2&&b.charAt(0)=="?"&&(b=b.substring(1)),window.location.hash=b,this.fireHistoryEvent(b)}},window.historyStorage={setup:function(a){typeof a!="undefined"&&(a.debugMode&&(this.debugMode=a.debugMode),a.toJSON&&(this.toJSON=a.toJSON),a.fromJSON&&(this.fromJSON=a.fromJSON));var b="rshStorageForm",c="rshStorageField",d=this.debugMode?historyStorage.showStyles:historyStorage.hideStyles,e=historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles,f='<form id="'+b+'" style="'+d+'">'+'<textarea id="'+c+'" style="'+e+'"></textarea>'+"</form>";document.write(f),this.storageField=document.getElementById(c),typeof window.opera!="undefined"&&this.storageField.focus()},put:function(a,b){this.assertValidKey(a),this.hasKey(a)&&this.remove(a),this.storageHash[a]=b,this.saveHashTable()},get:function(a){this.assertValidKey(a),this.loadHashTable();var b=this.storageHash[a];return b===undefined&&(b=null),b},remove:function(a){this.assertValidKey(a),this.loadHashTable(),delete this.storageHash[a],this.saveHashTable()},reset:function(){this.storageField.value="",this.storageHash={}},hasKey:function(a){return this.assertValidKey(a),this.loadHashTable(),typeof this.storageHash[a]!="undefined"},isValidKey:function(a){return typeof a=="string"},showStyles:"border:0;margin:0;padding:0;",hideStyles:"left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;",debugMode:!1,storageHash:{},hashLoaded:!1,storageField:null,assertValidKey:function(a){var b=this.isValidKey(a);if(!b&&this.debugMode)throw new Error("Please provide a valid key for window.historyStorage. Invalid key = "+a+".")},loadHashTable:function(){if(!this.hashLoaded){var a=this.storageField.value;a!==""&&a!==null&&(this.storageHash=this.fromJSON(a),this.hashLoaded=!0)}},saveHashTable:function(){this.loadHashTable();var a=this.toJSON(this.storageHash);this.storageField.value=a},toJSON:function(a){return a.toJSONString()},fromJSON:function(a){return a.parseJSON()}};var Prototype={Version:"1.7",Browser:function(){var a=navigator.userAgent,b=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!b,Opera:b,WebKit:a.indexOf("AppleWebKit/")>-1,Gecko:a.indexOf("Gecko")>-1&&a.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(a)}}(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:function(){var a=window.Element||window.HTMLElement;return!!a&&!!a.prototype}(),SpecificElementExtensions:function(){if(typeof window.HTMLDivElement!="undefined")return!0;var a=document.createElement("div"),b=document.createElement("form"),c=!1;return a["__proto__"]&&a["__proto__"]!==b["__proto__"]&&(c=!0),a=b=null,c}()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)</script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(a){return a}};Prototype.Browser.MobileSafari&&(Prototype.BrowserFeatures.SpecificElementExtensions=!1);var Abstract={},Try={these:function(){var a;for(var b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a}},Class=function(){function b(){}function c(){function d(){this.initialize.apply(this,arguments)}var a=null,c=$A(arguments);Object.isFunction(c[0])&&(a=c.shift()),Object.extend(d,Class.Methods),d.superclass=a,d.subclasses=[],a&&(b.prototype=a.prototype,d.prototype=new b,a.subclasses.push(d));for(var e=0,f=c.length;e<f;e++)d.addMethods(c[e]);return d.prototype.initialize||(d.prototype.initialize=Prototype.emptyFunction),d.prototype.constructor=d,d}function d(b){var c=this.superclass&&this.superclass.prototype,d=Object.keys(b);a&&(b.toString!=Object.prototype.toString&&d.push("toString"),b.valueOf!=Object.prototype.valueOf&&d.push("valueOf"));for(var e=0,f=d.length;e<f;e++){var g=d[e],h=b[g];if(c&&Object.isFunction(h)&&h.argumentNames()[0]=="$super"){var i=h;h=function(a){return function(){return c[a].apply(this,arguments)}}(g).wrap(i),h.valueOf=i.valueOf.bind(i),h.toString=i.toString.bind(i)}this.prototype[g]=h}return this}var a=function(){for(var a in{toString:1})if(a==="toString")return!1;return!0}();return{create:c,Methods:{addMethods:d}}}();(function(){function o(a){switch(a){case null:return b;case void 0:return c}var h=typeof a;switch(h){case"boolean":return d;case"number":return e;case"string":return f}return g}function p(a,b){for(var c in b)a[c]=b[c];return a}function q(a){try{return H(a)?"undefined":a===null?"null":a.inspect?a.inspect():String(a)}catch(b){if(b instanceof RangeError)return"...";throw b}}function r(a){return s("",{"":a},[])}function s(b,c,d){var e=c[b],f=typeof e;o(e)===g&&typeof e.toJSON=="function"&&(e=e.toJSON(b));var h=a.call(e);switch(h){case j:case i:case k:e=e.valueOf()}switch(e){case null:return"null";case!0:return"true";case!1:return"false"}f=typeof e;switch(f){case"string":return e.inspect(!0);case"number":return isFinite(e)?String(e):"null";case"object":for(var m=0,n=d.length;m<n;m++)if(d[m]===e)throw new TypeError;d.push(e);var p=[];if(h===l){for(var m=0,n=e.length;m<n;m++){var q=s(m,e,d);p.push(typeof q=="undefined"?"null":q)}p="["+p.join(",")+"]"}else{var r=Object.keys(e);for(var m=0,n=r.length;m<n;m++){var b=r[m],q=s(b,e,d);typeof q!="undefined"&&p.push(b.inspect(!0)+":"+q)}p="{"+p.join(",")+"}"}return d.pop(),p}}function t(a){return JSON.stringify(a)}function u(a){return $H(a).toQueryString()}function v(a){return a&&a.toHTML?a.toHTML():String.interpret(a)}function w(a){if(o(a)!==g)throw new TypeError;var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}function x(a){var b=[];for(var c in a)b.push(a[c]);return b}function y(a){return p({},a)}function z(a){return!!a&&a.nodeType==1}function A(b){return a.call(b)===l}function C(a){return a instanceof Hash}function D(b){return a.call(b)===h}function E(b){return a.call(b)===k}function F(b){return a.call(b)===j}function G(b){return a.call(b)===m}function H(a){return typeof a=="undefined"}var a=Object.prototype.toString,b="Null",c="Undefined",d="Boolean",e="Number",f="String",g="Object",h="[object Function]",i="[object Boolean]",j="[object Number]",k="[object String]",l="[object Array]",m="[object Date]",n=window.JSON&&typeof JSON.stringify=="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)=="undefined",B=typeof Array.isArray=="function"&&Array.isArray([])&&!Array.isArray({});B&&(A=Array.isArray),p(Object,{extend:p,inspect:q,toJSON:n?t:r,toQueryString:u,toHTML:v,keys:Object.keys||w,values:x,clone:y,isElement:z,isArray:A,isHash:C,isFunction:D,isString:E,isNumber:F,isDate:G,isUndefined:H})})(),Object.extend(Function.prototype,function(){function b(a,b){var c=a.length,d=b.length;while(d--)a[c+d]=b[d];return a}function c(c,d){return c=a.call(c,0),b(c,d)}function d(){var a=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return a.length==1&&!a[0]?[]:a}function e(b){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var d=this,e=a.call(arguments,1);return function(){var a=c(e,arguments);return d.apply(b,a)}}function f(c){var d=this,e=a.call(arguments,1);return function(a){var f=b([a||window.event],e);return d.apply(c,f)}}function g(){if(!arguments.length)return this;var b=this,d=a.call(arguments,0);return function(){var a=c(d,arguments);return b.apply(this,a)}}function h(b){var c=this,d=a.call(arguments,1);return b=b*1e3,window.setTimeout(function(){return c.apply(c,d)},b)}function i(){var a=b([.01],arguments);return this.delay.apply(this,a)}function j(a){var c=this;return function(){var d=b([c.bind(this)],arguments);return a.apply(this,d)}}function k(){if(this._methodized)return this._methodized;var a=this;return this._methodized=function(){var c=b([this],arguments);return a.apply(null,c)}}var a=Array.prototype.slice;return{argumentNames:d,bind:e,bindAsEventListener:f,curry:g,delay:h,defer:i,wrap:j,methodize:k}}()),function(a){function b(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function c(){return this.toISOString()}a.toISOString||(a.toISOString=b),a.toJSON||(a.toJSON=c)}(Date.prototype),RegExp.prototype.match=RegExp.prototype.test,RegExp.escape=function(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(a,b){this.callback=a,this.frequency=b,this.currentlyExecuting=!1,this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1e3)},execute:function(){this.callback(this)},stop:function(){if(!this.timer)return;clearInterval(this.timer),this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting)try{this.currentlyExecuting=!0,this.execute(),this.currentlyExecuting=!1}catch(a){throw this.currentlyExecuting=!1,a}}});Object.extend(String,{interpret:function(a){return a==null?"":String(a)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}}),Object.extend(String.prototype,function(){function prepareReplacement(a){if(Object.isFunction(a))return a;var b=new Template(a);return function(a){return b.evaluate(a)}}function gsub(a,b){var c="",d=this,e;b=prepareReplacement(b),Object.isString(a)&&(a=RegExp.escape(a));if(!a.length&&!a.source)return b=b(""),b+d.split("").join(b)+b;while(d.length>0)(e=d.match(a))?(c+=d.slice(0,e.index),c+=String.interpret(b(e)),d=d.slice(e.index+e[0].length)):(c+=d,d="");return c}function sub(a,b,c){return b=prepareReplacement(b),c=Object.isUndefined(c)?1:c,this.gsub(a,function(a){return--c<0?a[0]:b(a)})}function scan(a,b){return this.gsub(a,b),String(this)}function truncate(a,b){return a=a||30,b=Object.isUndefined(b)?"...":b,this.length>a?this.slice(0,a-b.length)+b:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi,"")}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var a=new RegExp(Prototype.ScriptFragment,"img"),b=new RegExp(Prototype.ScriptFragment,"im");return(this.match(a)||[]).map(function(a){return(a.match(b)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function unescapeHTML(){return this.stripTags().replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")}function toQueryParams(a){var b=this.strip().match(/([^?#]*)(#.*)?$/);return b?b[1].split(a||"&").inject({},function(a,b){if((b=b.split("="))[0]){var c=decodeURIComponent(b.shift()),d=b.length>1?b.join("="):b[0];d!=undefined&&(d=decodeURIComponent(d)),c in a?(Object.isArray(a[c])||(a[c]=[a[c]]),a[c].push(d)):a[c]=d}return a}):{}}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(a){return a<1?"":(new Array(a+1)).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(a){var b=this.replace(/[\x00-\x1f\\]/g,function(a){return a in String.specialChar?String.specialChar[a]:"\\u00"+a.charCodeAt().toPaddedString(2,16)});return a?'"'+b.replace(/"/g,'\\"')+'"':"'"+b.replace(/'/g,"\\'")+"'"}function unfilterJSON(a){return this.replace(a||Prototype.JSONFilter,"$1")}function isJSON(){var a=this;return a.blank()?!1:(a=a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@"),a=a.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]"),a=a.replace(/(?:^|:|,)(?:\s*\[)+/g,""),/^[\],:{}\s]*$/.test(a))}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;cx.test(json)&&(json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));try{if(!sanitize||json.isJSON())return eval("("+json+")")}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var a=this.unfilterJSON();return JSON.parse(a)}function include(a){return this.indexOf(a)>-1}function startsWith(a){return this.lastIndexOf(a,0)===0}function endsWith(a){var b=this.length-a.length;return b>=0&&this.indexOf(a,b)===b}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(a,b){return(new Template(this,b)).evaluate(a)}var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse=="function"&&JSON.parse('{"test": true}').test;return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:startsWith,endsWith:endsWith,empty:empty,blank:blank,interpolate:interpolate}}());var Template=Class.create({initialize:function(a,b){this.template=a.toString(),this.pattern=b||Template.Pattern},evaluate:function(a){return a&&Object.isFunction(a.toTemplateReplacements)&&(a=a.toTemplateReplacements()),this.template.gsub(this.pattern,function(b){if(a==null)return b[1]+"";var c=b[1]||"";if(c=="\\")return b[2];var d=a,e=b[3],f=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;b=f.exec(e);if(b==null)return c;while(b!=null){var g=b[1].startsWith("[")?b[2].replace(/\\\\]/g,"]"):b[1];d=d[g];if(null==d||""==b[3])break;e=e.substring("["==b[3]?b[1].length:b[0].length),b=f.exec(e)}return c+String.interpret(d)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={},Enumerable=function(){function a(a,b){var c=0;try{this._each(function(d){a.call(b,d,c++)})}catch(d){if(d!=$break)throw d}return this}function b(a,b,c){var d=-a,e=[],f=this.toArray();if(a<1)return f;while((d+=a)<f.length)e.push(f.slice(d,d+a));return e.collect(b,c)}function c(a,b){a=a||Prototype.K;var c=!0;return this.each(function(d,e){c=c&&!!a.call(b,d,e);if(!c)throw $break}),c}function d(a,b){a=a||Prototype.K;var c=!1;return this.each(function(d,e){if(c=!!a.call(b,d,e))throw $break}),c}function e(a,b){a=a||Prototype.K;var c=[];return this.each(function(d,e){c.push(a.call(b,d,e))}),c}function f(a,b){var c;return this.each(function(d,e){if(a.call(b,d,e))throw c=d,$break}),c}function g(a,b){var c=[];return this.each(function(d,e){a.call(b,d,e)&&c.push(d)}),c}function h(a,b,c){b=b||Prototype.K;var d=[];return Object.isString(a)&&(a=new RegExp(RegExp.escape(a))),this.each(function(e,f){a.match(e)&&d.push(b.call(c,e,f))}),d}function i(a){if(Object.isFunction(this.indexOf)&&this.indexOf(a)!=-1)return!0;var b=!1;return this.each(function(c){if(c==a)throw b=!0,$break}),b}function j(a,b){return b=Object.isUndefined(b)?null:b,this.eachSlice(a,function(c){while(c.length<a)c.push(b);return c})}function k(a,b,c){return this.each(function(d,e){a=b.call(c,a,d,e)}),a}function l(a){var b=$A(arguments).slice(1);return this.map(function(c){return c[a].apply(c,b)})}function m(a,b){a=a||Prototype.K;var c;return this.each(function(d,e){d=a.call(b,d,e);if(c==null||d>=c)c=d}),c}function n(a,b){a=a||Prototype.K;var c;return this.each(function(d,e){d=a.call(b,d,e);if(c==null||d<c)c=d}),c}function o(a,b){a=a||Prototype.K;var c=[],d=[];return this.each(function(e,f){(a.call(b,e,f)?c:d).push(e)}),[c,d]}function p(a){var b=[];return this.each(function(c){b.push(c[a])}),b}function q(a,b){var c=[];return this.each(function(d,e){a.call(b,d,e)||c.push(d)}),c}function r(a,b){return this.map(function(c,d){return{value:c,criteria:a.call(b,c,d)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}).pluck("value")}function s(){return this.map()}function t(){var a=Prototype.K,b=$A(arguments);Object.isFunction(b.last())&&(a=b.pop());var c=[this].concat(b).map($A);return this.map(function(b,d){return a(c.pluck(d))})}function u(){return this.toArray().length}function v(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:a,eachSlice:b,all:c,every:c,any:d,some:d,collect:e,map:e,detect:f,findAll:g,select:g,filter:g,grep:h,include:i,member:i,inGroupsOf:j,inject:k,invoke:l,max:m,min:n,partition:o,pluck:p,reject:q,sortBy:r,toArray:s,entries:s,zip:t,size:u,inspect:v,find:f}}();Array.from=$A,function(){function d(a,b){for(var c=0,d=this.length>>>0;c<d;c++)c in this&&a.call(b,this[c],c,this)}function e(){return this.length=0,this}function f(){return this[0]}function g(){return this[this.length-1]}function h(){return this.select(function(a){return a!=null})}function i(){return this.inject([],function(a,b){return Object.isArray(b)?a.concat(b.flatten()):(a.push(b),a)})}function j(){var a=b.call(arguments,0);return this.select(function(b){return!a.include(b)})}function k(a){return(a===!1?this.toArray():this)._reverse()}function l(a){return this.inject([],function(b,c,d){return(0==d||(a?b.last()!=c:!b.include(c)))&&b.push(c),b})}function m(a){return this.uniq().findAll(function(b){return a.detect(function(a){return b===a})})}function n(){return b.call(this,0)}function o(){return this.length}function p(){return"["+this.map(Object.inspect).join(", ")+"]"}function q(a,b){b||(b=0);var c=this.length;b<0&&(b=c+b);for(;b<c;b++)if(this[b]===a)return b;return-1}function r(a,b){b=isNaN(b)?this.length:(b<0?this.length+b:b)+1;var c=this.slice(0,b).reverse().indexOf(a);return c<0?c:b-c-1}function s(){var a=b.call(this,0),c;for(var d=0,e=arguments.length;d<e;d++){c=arguments[d];if(!Object.isArray(c)||"callee"in c)a.push(c);else for(var f=0,g=c.length;f<g;f++)a.push(c[f])}return a}var a=Array.prototype,b=a.slice,c=a.forEach;c||(c=d),Object.extend(a,Enumerable),a._reverse||(a._reverse=a.reverse),Object.extend(a,{_each:c,clear:e,first:f,last:g,compact:h,flatten:i,without:j,reverse:k,uniq:l,intersect:m,clone:n,toArray:n,size:o,inspect:p});var t=function(){return[].concat(arguments)[0][0]!==1}(1,2);t&&(a.concat=s),a.indexOf||(a.indexOf=q),a.lastIndexOf||(a.lastIndexOf=r)}();var Hash=Class.create(Enumerable,function(){function a(a){this._object=Object.isHash(a)?a.toObject():Object.clone(a)}function b(a){for(var b in this._object){var c=this._object[b],d=[b,c];d.key=b,d.value=c,a(d)}}function c(a,b){return this._object[a]=b}function d(a){if(this._object[a]!==Object.prototype[a])return this._object[a]}function e(a){var b=this._object[a];return delete this._object[a],b}function f(){return Object.clone(this._object)}function g(){return this.pluck("key")}function h(){return this.pluck("value")}function i(a){var b=this.detect(function(b){return b.value===a});return b&&b.key}function j(a){return this.clone().update(a)}function k(a){return(new Hash(a)).inject(this,function(a,b){return a.set(b.key,b.value),a})}function l(a,b){return Object.isUndefined(b)?a:a+"="+encodeURIComponent(String.interpret(b))}function m(){return this.inject([],function(a,b){var c=encodeURIComponent(b.key),d=b.value;if(d&&typeof d=="object"){if(Object.isArray(d)){var e=[];for(var f=0,g=d.length,h;f<g;f++)h=d[f],e.push(l(c,h));return a.concat(e)}}else a.push(l(c,d));return a}).join("&")}function n(){return"#<Hash:{"+this.map(function(a){return a.map(Object.inspect).join(": ")}).join(", ")+"}>"}function o(){return new Hash(this)}return{initialize:a,_each:b,set:c,get:d,unset:e,toObject:f,toTemplateReplacements:f,keys:g,values:h,index:i,merge:j,update:k,toQueryString:m,inspect:n,toJSON:f,clone:o}}());Hash.from=$H,Object.extend(Number.prototype,function(){function a(){return this.toPaddedString(2,16)}function b(){return this+1}function c(a,b){return $R(0,this,!0).each(a,b),this}function d(a,b){var c=this.toString(b||10);return"0".times(a-c.length)+c}function e(){return Math.abs(this)}function f(){return Math.round(this)}function g(){return Math.ceil(this)}function h(){return Math.floor(this)}return{toColorPart:a,succ:b,times:c,toPaddedString:d,abs:e,round:f,ceil:g,floor:h}}());var ObjectRange=Class.create(Enumerable,function(){function a(a,b,c){this.start=a,this.end=b,this.exclusive=c}function b(a){var b=this.start;while(this.include(b))a(b),b=b.succ()}function c(a){return a<this.start?!1:this.exclusive?a<this.end:a<=this.end}return{initialize:a,_each:b,include:c}}()),Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||!1},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(a){this.responders._each(a)},register:function(a){this.include(a)||this.responders.push(a)},unregister:function(a){this.responders=this.responders.without(a)},dispatch:function(a,b,c,d){this.each(function(e){if(Object.isFunction(e[a]))try{e[a].apply(e,[b,c,d])}catch(f){}})}},Object.extend(Ajax.Responders,Enumerable),Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}}),Ajax.Base=Class.create({initialize:function(a){this.options={method:"post",asynchronous:!0,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:!0,evalJS:!0},Object.extend(this.options,a||{}),this.options.method=this.options.method.toLowerCase(),Object.isHash(this.options.parameters)&&(this.options.parameters=this.options.parameters.toObject())}}),Ajax.Request=Class.create(Ajax.Base,{_complete:!1,initialize:function($super,a,b){$super(b),this.transport=Ajax.getTransport(),this.request(a)},request:function(a){this.url=a,this.method=this.options.method;var b=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);["get","post"].include(this.method)||(b+=(b?"&":"")+"_method="+this.method,this.method="post"),b&&this.method==="get"&&(this.url+=(this.url.include("?")?"&":"?")+b);try{var c=new Ajax.Response(this);this.options.onCreate&&this.options.onCreate(c),Ajax.Responders.dispatch("onCreate",this,c),this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous),this.options.asynchronous&&this.respondToReadyState.bind(this).defer(1),this.transport.onreadystatechange=this.onStateChange.bind(this),this.setRequestHeaders(),this.body=this.method=="post"?this.options.postBody||b:null,this.transport.send(this.body),!this.options.asynchronous&&this.transport.overrideMimeType&&this.onStateChange()}catch(d){this.dispatchException(d)}},onStateChange:function(){var a=this.transport.readyState;a>1&&(a!=4||!this._complete)&&this.respondToReadyState(this.transport.readyState)},setRequestHeaders:function(){var a={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};this.method=="post"&&(a["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:""),this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005&&(a.Connection="close"));if(typeof this.options.requestHeaders=="object"){var b=this.options.requestHeaders;if(Object.isFunction(b.push))for(var c=0,d=b.length;c<d;c+=2)a[b[c]]=b[c+1];else $H(b).each(function(b){a[b.key]=b.value})}for(var e in a)this.transport.setRequestHeader(e,a[e])},success:function(){var a=this.getStatus();return!a||a>=200&&a<300||a==304},getStatus:function(){try{return this.transport.status===1223?204:this.transport.status||0}catch(a){return 0}},respondToReadyState:function(a){var b=Ajax.Request.Events[a],c=new Ajax.Response(this);if(b=="Complete"){try{this._complete=!0,(this.options["on"+c.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(c,c.headerJSON)}catch(d){this.dispatchException(d)}var e=c.getHeader("Content-type");(this.options.evalJS=="force"||this.options.evalJS&&this.isSameOrigin()&&e&&e.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))&&this.evalResponse()}try{(this.options["on"+b]||Prototype.emptyFunction)(c,c.headerJSON),Ajax.Responders.dispatch("on"+b,this,c,c.headerJSON)}catch(d){this.dispatchException(d)}b=="Complete"&&(this.transport.onreadystatechange=Prototype.emptyFunction)},isSameOrigin:function(){var a=this.url.match(/^\s*https?:\/\/[^\/]*/);return!a||a[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""})},getHeader:function(a){try{return this.transport.getResponseHeader(a)||null}catch(b){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(a){(this.options.onException||Prototype.emptyFunction)(this,a),Ajax.Responders.dispatch("onException",this,a)}}),Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"],Ajax.Response=Class.create({initialize:function(a){this.request=a;var b=this.transport=a.transport,c=this.readyState=b.readyState;if(c>2&&!Prototype.Browser.IE||c==4)this.status=this.getStatus(),this.statusText=this.getStatusText(),this.responseText=String.interpret(b.responseText),this.headerJSON=this._getHeaderJSON();if(c==4){var d=b.responseXML;this.responseXML=Object.isUndefined(d)?null:d,this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(a){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(a){return null}},getResponseHeader:function(a){return this.transport.getResponseHeader(a)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var a=this.getHeader("X-JSON");if(!a)return null;a=decodeURIComponent(escape(a));try{return a.evalJSON(this.request.options
.sanitizeJSON||!this.request.isSameOrigin())}catch(b){this.request.dispatchException(b)}},_getResponseJSON:function(){var a=this.request.options;if(!a.evalJSON||a.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json")||this.responseText.blank())return null;try{return this.responseText.evalJSON(a.sanitizeJSON||!this.request.isSameOrigin())}catch(b){this.request.dispatchException(b)}}}),Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,a,b,c){this.container={success:a.success||a,failure:a.failure||(a.success?null:a)},c=Object.clone(c);var d=c.onComplete;c.onComplete=function(a,b){this.updateContent(a.responseText),Object.isFunction(d)&&d(a,b)}.bind(this),$super(b,c)},updateContent:function(a){var b=this.container[this.success()?"success":"failure"],c=this.options;c.evalScripts||(a=a.stripScripts());if(b=$(b))if(c.insertion)if(Object.isString(c.insertion)){var d={};d[c.insertion]=a,b.insert(d)}else c.insertion(b,a);else b.update(a)}}),Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,a,b,c){$super(c),this.onComplete=this.options.onComplete,this.frequency=this.options.frequency||2,this.decay=this.options.decay||1,this.updater={},this.container=a,this.url=b,this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this),this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined,clearTimeout(this.timer),(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(a){this.options.decay&&(this.decay=a.responseText==this.lastText?this.decay*this.options.decay:1,this.lastText=a.responseText),this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}}),Prototype.BrowserFeatures.XPath&&(document._getElementsByXPath=function(a,b){var c=[],d=document.evaluate(a,$(b)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var e=0,f=d.snapshotLength;e<f;e++)c.push(Element.extend(d.snapshotItem(e)));return c});if(!Node)var Node={};Node.ELEMENT_NODE||Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}),function(a){function b(a,b){return a==="select"?!1:"type"in b?!1:!0}var c=function(){try{var a=document.createElement('<input name="x">');return a.tagName.toLowerCase()==="input"&&a.name==="x"}catch(b){return!1}}(),d=a.Element;a.Element=function(a,d){d=d||{},a=a.toLowerCase();var e=Element.cache;if(c&&d.name)return a="<"+a+' name="'+d.name+'">',delete d.name,Element.writeAttribute(document.createElement(a),d);e[a]||(e[a]=Element.extend(document.createElement(a)));var f=b(a,d)?e[a].cloneNode(!1):document.createElement(a);return Element.writeAttribute(f,d)},Object.extend(a.Element,d||{}),d&&(a.Element.prototype=d.prototype)}(this),Element.idCounter=1,Element.cache={},Element._purgeElement=function(a){var b=a._prototypeUID;b&&(Element.stopObserving(a),a._prototypeUID=void 0,delete Element.Storage[b])},Element.Methods={visible:function(a){return $(a).style.display!="none"},toggle:function(a){return a=$(a),Element[Element.visible(a)?"hide":"show"](a),a},hide:function(a){return a=$(a),a.style.display="none",a},show:function(a){return a=$(a),a.style.display="",a},remove:function(a){return a=$(a),a.parentNode.removeChild(a),a},update:function(){function f(a,b){a=$(a);var f=Element._purgeElement,g=a.getElementsByTagName("*"),h=g.length;while(h--)f(g[h]);b&&b.toElement&&(b=b.toElement());if(Object.isElement(b))return a.update().insert(b);b=Object.toHTML(b);var i=a.tagName.toUpperCase();if(i==="SCRIPT"&&e)return a.text=b,a;if(d)if(i in Element._insertionTranslations.tags){while(a.firstChild)a.removeChild(a.firstChild);Element._getContentFromAnonymousElement(i,b.stripScripts()).each(function(b){a.appendChild(b)})}else if(c&&Object.isString(b)&&b.indexOf("<link")>-1){while(a.firstChild)a.removeChild(a.firstChild);var j=Element._getContentFromAnonymousElement(i,b.stripScripts(),!0);j.each(function(b){a.appendChild(b)})}else a.innerHTML=b.stripScripts();else a.innerHTML=b.stripScripts();return b.evalScripts.bind(b).defer(),a}var a=function(){var a=document.createElement("select"),b=!0;return a.innerHTML='<option value="test">test</option>',a.options&&a.options[0]&&(b=a.options[0].nodeName.toUpperCase()!=="OPTION"),a=null,b}(),b=function(){try{var a=document.createElement("table");if(a&&a.tBodies){a.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var b=typeof a.tBodies[0]=="undefined";return a=null,b}}catch(c){return!0}}(),c=function(){try{var a=document.createElement("div");a.innerHTML="<link>";var b=a.childNodes.length===0;return a=null,b}catch(c){return!0}}(),d=a||b||c,e=function(){var a=document.createElement("script"),b=!1;try{a.appendChild(document.createTextNode("")),b=!a.firstChild||a.firstChild&&a.firstChild.nodeType!==3}catch(c){b=!0}return a=null,b}();return f}(),replace:function(a,b){a=$(a);if(b&&b.toElement)b=b.toElement();else if(!Object.isElement(b)){b=Object.toHTML(b);var c=a.ownerDocument.createRange();c.selectNode(a),b.evalScripts.bind(b).defer(),b=c.createContextualFragment(b.stripScripts())}return a.parentNode.replaceChild(b,a),a},insert:function(a,b){a=$(a);if(Object.isString(b)||Object.isNumber(b)||Object.isElement(b)||b&&(b.toElement||b.toHTML))b={bottom:b};var c,d,e,f;for(var g in b){c=b[g],g=g.toLowerCase(),d=Element._insertionTranslations[g],c&&c.toElement&&(c=c.toElement());if(Object.isElement(c)){d(a,c);continue}c=Object.toHTML(c),e=(g=="before"||g=="after"?a.parentNode:a).tagName.toUpperCase(),f=Element._getContentFromAnonymousElement(e,c.stripScripts()),(g=="top"||g=="after")&&f.reverse(),f.each(d.curry(a)),c.evalScripts.bind(c).defer()}return a},wrap:function(a,b,c){return a=$(a),Object.isElement(b)?$(b).writeAttribute(c||{}):Object.isString(b)?b=new Element(b,c):b=new Element("div",b),a.parentNode&&a.parentNode.replaceChild(b,a),b.appendChild(a),b},inspect:function(a){a=$(a);var b="<"+a.tagName.toLowerCase();return $H({id:"id",className:"class"}).each(function(c){var d=c.first(),e=c.last(),f=(a[d]||"").toString();f&&(b+=" "+e+"="+f.inspect(!0))}),b+">"},recursivelyCollect:function(a,b,c){a=$(a),c=c||-1;var d=[];while(a=a[b]){a.nodeType==1&&d.push(Element.extend(a));if(d.length==c)break}return d},ancestors:function(a){return Element.recursivelyCollect(a,"parentNode")},descendants:function(a){return Element.select(a,"*")},firstDescendant:function(a){a=$(a).firstChild;while(a&&a.nodeType!=1)a=a.nextSibling;return $(a)},immediateDescendants:function(a){var b=[],c=$(a).firstChild;while(c)c.nodeType===1&&b.push(Element.extend(c)),c=c.nextSibling;return b},previousSiblings:function(a,b){return Element.recursivelyCollect(a,"previousSibling")},nextSiblings:function(a){return Element.recursivelyCollect(a,"nextSibling")},siblings:function(a){return a=$(a),Element.previousSiblings(a).reverse().concat(Element.nextSiblings(a))},match:function(a,b){return a=$(a),Object.isString(b)?Prototype.Selector.match(a,b):b.match(a)},up:function(a,b,c){a=$(a);if(arguments.length==1)return $(a.parentNode);var d=Element.ancestors(a);return Object.isNumber(b)?d[b]:Prototype.Selector.find(d,b,c)},down:function(a,b,c){return a=$(a),arguments.length==1?Element.firstDescendant(a):Object.isNumber(b)?Element.descendants(a)[b]:Element.select(a,b)[c||0]},previous:function(a,b,c){return a=$(a),Object.isNumber(b)&&(c=b,b=!1),Object.isNumber(c)||(c=0),b?Prototype.Selector.find(a.previousSiblings(),b,c):a.recursivelyCollect("previousSibling",c+1)[c]},next:function(a,b,c){a=$(a),Object.isNumber(b)&&(c=b,b=!1),Object.isNumber(c)||(c=0);if(b)return Prototype.Selector.find(a.nextSiblings(),b,c);var d=Object.isNumber(c)?c+1:1;return a.recursivelyCollect("nextSibling",c+1)[c]},select:function(a){a=$(a);var b=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(b,a)},adjacent:function(a){a=$(a);var b=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(b,a.parentNode).without(a)},identify:function(a){a=$(a);var b=Element.readAttribute(a,"id");if(b)return b;do b="anonymous_element_"+Element.idCounter++;while($(b));return Element.writeAttribute(a,"id",b),b},readAttribute:function(a,b){a=$(a);if(Prototype.Browser.IE){var c=Element._attributeTranslations.read;if(c.values[b])return c.values[b](a,b);c.names[b]&&(b=c.names[b]);if(b.include(":"))return!a.attributes||!a.attributes[b]?null:a.attributes[b].value}return a.getAttribute(b)},writeAttribute:function(a,b,c){a=$(a);var d={},e=Element._attributeTranslations.write;typeof b=="object"?d=b:d[b]=Object.isUndefined(c)?!0:c;for(var f in d)b=e.names[f]||f,c=d[f],e.values[f]&&(b=e.values[f](a,c)),c===!1||c===null?a.removeAttribute(b):c===!0?a.setAttribute(b,b):a.setAttribute(b,c);return a},getHeight:function(a){return Element.getDimensions(a).height},getWidth:function(a){return Element.getDimensions(a).width},classNames:function(a){return new Element.ClassNames(a)},hasClassName:function(a,b){if(!(a=$(a)))return;var c=a.className;return c.length>0&&(c==b||(new RegExp("(^|\\s)"+b+"(\\s|$)")).test(c))},addClassName:function(a,b){if(!(a=$(a)))return;return Element.hasClassName(a,b)||(a.className+=(a.className?" ":"")+b),a},removeClassName:function(a,b){if(!(a=$(a)))return;return a.className=a.className.replace(new RegExp("(^|\\s+)"+b+"(\\s+|$)")," ").strip(),a},toggleClassName:function(a,b){if(!(a=$(a)))return;return Element[Element.hasClassName(a,b)?"removeClassName":"addClassName"](a,b)},cleanWhitespace:function(a){a=$(a);var b=a.firstChild;while(b){var c=b.nextSibling;b.nodeType==3&&!/\S/.test(b.nodeValue)&&a.removeChild(b),b=c}return a},empty:function(a){return $(a).innerHTML.blank()},descendantOf:function(a,b){a=$(a),b=$(b);if(a.compareDocumentPosition)return(a.compareDocumentPosition(b)&8)===8;if(b.contains)return b.contains(a)&&b!==a;while(a=a.parentNode)if(a==b)return!0;return!1},scrollTo:function(a){a=$(a);var b=Element.cumulativeOffset(a);return window.scrollTo(b[0],b[1]),a},getStyle:function(a,b){a=$(a),b=b=="float"?"cssFloat":b.camelize();var c=a.style[b];if(!c||c=="auto"){var d=document.defaultView.getComputedStyle(a,null);c=d?d[b]:null}return b=="opacity"?c?parseFloat(c):1:c=="auto"?null:c},getOpacity:function(a){return $(a).getStyle("opacity")},setStyle:function(a,b){a=$(a);var c=a.style,d;if(Object.isString(b))return a.style.cssText+=";"+b,b.include("opacity")?a.setOpacity(b.match(/opacity:\s*(\d?\.?\d*)/)[1]):a;for(var e in b)e=="opacity"?a.setOpacity(b[e]):c[e=="float"||e=="cssFloat"?Object.isUndefined(c.styleFloat)?"cssFloat":"styleFloat":e]=b[e];return a},setOpacity:function(a,b){return a=$(a),a.style.opacity=b==1||b===""?"":b<1e-5?0:b,a},makePositioned:function(a){a=$(a);var b=Element.getStyle(a,"position");if(b=="static"||!b)a._madePositioned=!0,a.style.position="relative",Prototype.Browser.Opera&&(a.style.top=0,a.style.left=0);return a},undoPositioned:function(a){return a=$(a),a._madePositioned&&(a._madePositioned=undefined,a.style.position=a.style.top=a.style.left=a.style.bottom=a.style.right=""),a},makeClipping:function(a){return a=$(a),a._overflow?a:(a._overflow=Element.getStyle(a,"overflow")||"auto",a._overflow!=="hidden"&&(a.style.overflow="hidden"),a)},undoClipping:function(a){return a=$(a),a._overflow?(a.style.overflow=a._overflow=="auto"?"":a._overflow,a._overflow=null,a):a},clonePosition:function(a,b){var c=Object.extend({setLeft:!0,setTop:!0,setWidth:!0,setHeight:!0,offsetTop:0,offsetLeft:0},arguments[2]||{});b=$(b);var d=Element.viewportOffset(b),e=[0,0],f=null;return a=$(a),Element.getStyle(a,"position")=="absolute"&&(f=Element.getOffsetParent(a),e=Element.viewportOffset(f)),f==document.body&&(e[0]-=document.body.offsetLeft,e[1]-=document.body.offsetTop),c.setLeft&&(a.style.left=d[0]-e[0]+c.offsetLeft+"px"),c.setTop&&(a.style.top=d[1]-e[1]+c.offsetTop+"px"),c.setWidth&&(a.style.width=b.offsetWidth+"px"),c.setHeight&&(a.style.height=b.offsetHeight+"px"),a}},Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants}),Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}},Prototype.Browser.Opera?(Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(a,b,c){switch(c){case"height":case"width":if(!Element.visible(b))return null;var d=parseInt(a(b,c),10);if(d!==b["offset"+c.capitalize()])return d+"px";var e;return c==="height"?e=["border-top-width","padding-top","padding-bottom","border-bottom-width"]:e=["border-left-width","padding-left","padding-right","border-right-width"],e.inject(d,function(c,d){var e=a(b,d);return e===null?c:c-parseInt(e,10)})+"px";default:return a(b,c)}}),Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(a,b,c){return c==="title"?b.title:a(b,c)})):Prototype.Browser.IE?(Element.Methods.getStyle=function(a,b){a=$(a),b=b=="float"||b=="cssFloat"?"styleFloat":b.camelize();var c=a.style[b];!c&&a.currentStyle&&(c=a.currentStyle[b]);if(b=="opacity"){if(c=(a.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/))if(c[1])return parseFloat(c[1])/100;return 1}return c=="auto"?b!="width"&&b!="height"||a.getStyle("display")=="none"?null:a["offset"+b.capitalize()]+"px":c},Element.Methods.setOpacity=function(a,b){function c(a){return a.replace(/alpha\([^\)]*\)/gi,"")}a=$(a);var d=a.currentStyle;if(d&&!d.hasLayout||!d&&a.style.zoom=="normal")a.style.zoom=1;var e=a.getStyle("filter"),f=a.style;return b==1||b===""?((e=c(e))?f.filter=e:f.removeAttribute("filter"),a):(b<1e-5&&(b=0),f.filter=c(e)+"alpha(opacity="+b*100+")",a)},Element._attributeTranslations=function(){var a="className",b="for",c=document.createElement("div");return c.setAttribute(a,"x"),c.className!=="x"&&(c.setAttribute("class","x"),c.className==="x"&&(a="class")),c=null,c=document.createElement("label"),c.setAttribute(b,"x"),c.htmlFor!=="x"&&(c.setAttribute("htmlFor","x"),c.htmlFor==="x"&&(b="htmlFor")),c=null,{read:{names:{"class":a,className:a,"for":b,htmlFor:b},values:{_getAttr:function(a,b){return a.getAttribute(b)},_getAttr2:function(a,b){return a.getAttribute(b,2)},_getAttrNode:function(a,b){var c=a.getAttributeNode(b);return c?c.value:""},_getEv:function(){var a=document.createElement("div"),b;a.onclick=Prototype.emptyFunction;var c=a.getAttribute("onclick");return String(c).indexOf("{")>-1?b=function(a,b){return b=a.getAttribute(b),b?(b=b.toString(),b=b.split("{")[1],b=b.split("}")[0],b.strip()):null}:c===""&&(b=function(a,b){return b=a.getAttribute(b),b?b.strip():null}),a=null,b}(),_flag:function(a,b){return $(a).hasAttribute(b)?b:null},style:function(a){return a.style.cssText.toLowerCase()},title:function(a){return a.title}}}}}(),Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(a,b){a.checked=!!b},style:function(a,b){a.style.cssText=b?b:""}}},Element._attributeTranslations.has={},$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder").each(function(a){Element._attributeTranslations.write.names[a.toLowerCase()]=a,Element._attributeTranslations.has[a.toLowerCase()]=a}),function(a){Object.extend(a,{href:a._getAttr2,src:a._getAttr2,type:a._getAttr,action:a._getAttrNode,disabled:a._flag,checked:a._flag,readonly:a._flag,multiple:a._flag,onload:a._getEv,onunload:a._getEv,onclick:a._getEv,ondblclick:a._getEv,onmousedown:a._getEv,onmouseup:a._getEv,onmouseover:a._getEv,onmousemove:a._getEv,onmouseout:a._getEv,onfocus:a._getEv,onblur:a._getEv,onkeypress:a._getEv,onkeydown:a._getEv,onkeyup:a._getEv,onsubmit:a._getEv,onreset:a._getEv,onselect:a._getEv,onchange:a._getEv})}(Element._attributeTranslations.read.values),Prototype.BrowserFeatures.ElementExtensions&&function(){function a(a){var b=a.getElementsByTagName("*"),c=[];for(var d=0,e;e=b[d];d++)e.tagName!=="!"&&c.push(e);return c}Element.Methods.down=function(b,c,d){return b=$(b),arguments.length==1?b.firstDescendant():Object.isNumber(c)?a(b)[c]:Element.select(b,c)[d||0]}}()):Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)?Element.Methods.setOpacity=function(a,b){return a=$(a),a.style.opacity=b==1?.999999:b===""?"":b<1e-5?0:b,a}:Prototype.Browser.WebKit&&(Element.Methods.setOpacity=function(a,b){a=$(a),a.style.opacity=b==1||b===""?"":b<1e-5?0:b;if(b==1)if(a.tagName.toUpperCase()=="IMG"&&a.width)a.width++,a.width--;else try{var c=document.createTextNode(" ");a.appendChild(c),a.removeChild(c)}catch(d){}return a}),"outerHTML"in document.documentElement&&(Element.Methods.replace=function(a,b){a=$(a),b&&b.toElement&&(b=b.toElement());if(Object.isElement(b))return a.parentNode.replaceChild(b,a),a;b=Object.toHTML(b);var c=a.parentNode,d=c.tagName.toUpperCase();if(Element._insertionTranslations.tags[d]){var e=a.next(),f=Element._getContentFromAnonymousElement(d,b.stripScripts());c.removeChild(a),e?f.each(function(a){c.insertBefore(a,e)}):f.each(function(a){c.appendChild(a)})}else a.outerHTML=b.stripScripts();return b.evalScripts.bind(b).defer(),a}),Element._returnOffset=function(a,b){var c=[a,b];return c.left=a,c.top=b,c},Element._getContentFromAnonymousElement=function(a,b,c){var d=new Element("div"),e=Element._insertionTranslations.tags[a],f=!1;e?f=!0:c&&(f=!0,e=["","",0]);if(f){d.innerHTML="&nbsp;"+e[0]+b+e[1],d.removeChild(d.firstChild);for(var g=e[2];g--;)d=d.firstChild}else d.innerHTML=b;return $A(d.childNodes)},Element._insertionTranslations={before:function(a,b){a.parentNode.insertBefore(b,a)},top:function(a,b){a.insertBefore(b,a.firstChild)},bottom:function(a,b){a.appendChild(b)},after:function(a,b){a.parentNode.insertBefore(b,a.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}},function(){var a=Element._insertionTranslations.tags;Object.extend(a,{THEAD:a.TBODY,TFOOT:a.TBODY,TH:a.TD})}(),Element.Methods.Simulated={hasAttribute:function(a,b){b=Element._attributeTranslations.has[b]||b;var c=$(a).getAttributeNode(b);return!!c&&!!c.specified}},Element.Methods.ByTag={},Object.extend(Element,Element.Methods),function(a){!Prototype.BrowserFeatures.ElementExtensions&&a["__proto__"]&&(window.HTMLElement={},window.HTMLElement.prototype=a["__proto__"],Prototype.BrowserFeatures.ElementExtensions=!0),a=null}(document.createElement("div")),Element.extend=function(){function a(a){if(typeof window.Element!="undefined"){var b=window.Element.prototype;if(b){var c="_"+(Math.random()+"").slice(2),d=document.createElement(a);b[c]="x";var e=d[c]!=="x";return delete b[c],d=null,e}}return!1}function b(a,b){for(var c in b){var d=b[c];Object.isFunction(d)&&!(c in a)&&(a[c]=d.methodize())}}var c=a("object");if(Prototype.BrowserFeatures.SpecificElementExtensions)return c?function(a){if(a&&typeof a._extendedByPrototype=="undefined"){var c=a.tagName;c&&/^(?:object|applet|embed)$/i.test(c)&&(b(a,Element.Methods),b(a,Element.Methods.Simulated),b(a,Element.Methods.ByTag[c.toUpperCase()]))}return a}:Prototype.K;var d={},e=Element.Methods.ByTag,f=Object.extend(function(a){if(!a||typeof a._extendedByPrototype!="undefined"||a.nodeType!=1||a==window)return a;var c=Object.clone(d),f=a.tagName.toUpperCase();return e[f]&&Object.extend(c,e[f]),b(a,c),a._extendedByPrototype=Prototype.emptyFunction,a},{refresh:function(){Prototype.BrowserFeatures.ElementExtensions||(Object.extend(d,Element.Methods),Object.extend(d,Element.Methods.Simulated))}});return f.refresh(),f}(),document.documentElement.hasAttribute?Element.hasAttribute=function(a,b){return a.hasAttribute(b)}:Element.hasAttribute=Element.Methods.Simulated.hasAttribute,Element.addMethods=function(a){function e(b){b=b.toUpperCase(),Element.Methods.ByTag[b]||(Element.Methods.ByTag[b]={}),Object.extend(Element.Methods.ByTag[b],a)}function f(a,b,c){c=c||!1;for(var d in a){var e=a[d];if(!Object.isFunction(e))continue;if(!c||!(d in b))b[d]=e.methodize()}}function g(a){var b,c={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};c[a]&&(b="HTML"+c[a]+"Element");if(window[b])return window[b];b="HTML"+a+"Element";if(window[b])return window[b];b="HTML"+a.capitalize()+"Element";if(window[b])return window[b];var d=document.createElement(a),e=d["__proto__"]||d.constructor.prototype;return d=null,e}var b=Prototype.BrowserFeatures,c=Element.Methods.ByTag;a||(Object.extend(Form,Form.Methods),Object.extend(Form.Element,Form.Element.Methods),Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)}));if(arguments.length==2){var d=a;a=arguments[1]}d?Object.isArray(d)?d.each(e):e(d):Object.extend(Element.Methods,a||{});var h=window.HTMLElement?HTMLElement.prototype:Element.prototype;b.ElementExtensions&&(f(Element.Methods,h),f(Element.Methods.Simulated,h,!0));if(b.SpecificElementExtensions)for(var i in Element.Methods.ByTag){var j=g(i);if(Object.isUndefined(j))continue;f(c[i],j.prototype)}Object.extend(Element,Element.Methods),delete Element.ByTag,Element.extend.refresh&&Element.extend.refresh(),Element.cache={}},document.viewport={getDimensions:function(){return{width:this.getWidth(),height:this.getHeight()}},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)}},function(a){function f(){return b.WebKit&&!c.evaluate?document:b.Opera&&window.parseFloat(window.opera.version())<9.5?document.body:document.documentElement}function g(b){return d||(d=f()),e[b]="client"+b,a["get"+b]=function(){return d[e[b]]},a["get"+b]()}var b=Prototype.Browser,c=document,d,e={};a.getWidth=g.curry("Width"),a.getHeight=g.curry("Height")}(document.viewport),Element.Storage={UID:1},Element.addMethods({getStorage:function(a){if(!(a=$(a)))return;var b;return a===window?b=0:(typeof a._prototypeUID=="undefined"&&(a._prototypeUID=Element.Storage.UID++),b=a._prototypeUID),Element.Storage[b]||(Element.Storage[b]=$H()),Element.Storage[b]},store:function(a,b,c){if(!(a=$(a)))return;return arguments.length===2?Element.getStorage(a).update(b):Element.getStorage(a).set(b,c),a},retrieve:function(a,b,c){if(!(a=$(a)))return;var d=Element.getStorage(a),e=d.get(b);return Object.isUndefined(e)&&(d.set(b,c),e=c),e},clone:function(a,b){if(!(a=$(a)))return;var c=a.cloneNode(b);c._prototypeUID=void 0;if(b){var d=Element.select(c,"*"),e=d.length;while(e--)d[e]._prototypeUID=void 0}return Element.extend(c)},purge:function(a){if(!(a=$(a)))return;var b=Element._purgeElement;b(a);var c=a.getElementsByTagName("*"),d=c.length;while(d--)b(c[d]);return null}}),function(){function a(a){var b=a.match(/^(\d+)%?$/i);return b?Number(b[1])/100:null}function b(b,c,d){var e=null;Object.isElement(b)&&(e=b,b=e.getStyle(c));if(b===null)return null;if(/^(?:-)?\d+(\.\d+)?(px)?$/i.test(b))return window.parseFloat(b);var f=b.include("%"),g=d===document.viewport;if(/\d/.test(b)&&e&&e.runtimeStyle&&(!f||!g)){var h=e.style.left,i=e.runtimeStyle.left;return e.runtimeStyle.left=e.currentStyle.left,e.style.left=b||0,b=e.style.pixelLeft,e.style.left=h,e.runtimeStyle.left=i,b}if(e&&f){d=d||e.parentNode;var j=a(b),k=null,l=e.getStyle("position"),m=c.include("left")||c.include("right")||c.include("width"),n=c.include("top")||c.include("bottom")||c.include("height");return d===document.viewport?m?k=document.viewport.getWidth():n&&(k=document.viewport.getHeight()):m?k=$(d).measure("width"):n&&(k=$(d).measure("height")),k===null?0:k*j}return 0}function c(a){return Object.isString(a)&&a.endsWith("px")?a:a+"px"}function d(a){var b=a;while(a&&a.parentNode){var c=a.getStyle("display");if(c==="none")return!1;a=$(a.parentNode)}return!0}function f(a){return a.include("border")&&(a=a+"-width"),a.camelize()}function g(a,b){return new Element.Layout(a,b)}function h(a,b){return $(a).getLayout().get(b)}function i(a){a=$(a);var b=Element.getStyle(a,"display");if(b&&b!=="none")return{width:a.offsetWidth,height:a.offsetHeight};var c=a.style,d={visibility:c.visibility,position:c.position,display:c.display},e={visibility:"hidden",display:"block"};d.position!=="fixed"&&(e.position="absolute"),Element.setStyle(a,e);var f={width:a.offsetWidth,height:a.offsetHeight};return Element.setStyle(a,d),f}function j(a){a=$(a);if(s(a)||t(a)||q(a)||r(a))return $(document.body);var b=Element.getStyle(a,"display")==="inline";if(!b&&a.offsetParent)return $(a.offsetParent);while((a=a.parentNode)&&a!==document.body)if(Element.getStyle(a,"position")!=="static")return r(a)?$(document.body):$(a);return $(document.body)}function k(a){a=$(a);var b=0,c=0;if(a.parentNode)do b+=a.offsetTop||0,c+=a.offsetLeft||0,a=a.offsetParent;while(a);return new Element.Offset(c,b)}function l(a){a=$(a);var b=a.getLayout(),c=0,d=0;do{c+=a.offsetTop||0,d+=a.offsetLeft||0,a=a.offsetParent;if(a){if(q(a))break;var e=Element.getStyle(a,"position");if(e!=="static")break}}while(a);return d-=b.get("margin-top"),c-=b.get("margin-left"),new Element.Offset(d,c)}function m(a){var b=0,c=0;do b+=a.scrollTop||0,c+=a.scrollLeft||0,a=a.parentNode;while(a);return new Element.Offset(c,b)}function n(a){e=$(e);var b=0,c=0,d=document.body,e=a;do{b+=e.offsetTop||0,c+=e.offsetLeft||0;if(e.offsetParent==d&&Element.getStyle(e,"position")=="absolute")break}while(e=e.offsetParent);e=a;do e!=d&&(b-=e.scrollTop||0,c-=e.scrollLeft||0);while(e=e.parentNode);return new Element.Offset(c,b)}function o(a){a=$(a);if(Element.getStyle(a,"position")==="absolute")return a;var b=j(a),c=a.viewportOffset(),d=b.viewportOffset(),e=c.relativeTo(d),f=a.getLayout();return a.store("prototype_absolutize_original_styles",{left:a.getStyle("left"),top:a.getStyle("top"),width:a.getStyle("width"),height:a.getStyle("height")}),a.setStyle({position:"absolute",top:e.top+"px",left:e.left+"px",width:f.get("width")+"px",height:f.get("height")+"px"}),a}function p(a){a=$(a);if(Element.getStyle(a,"position")==="relative")return a;var b=a.retrieve("prototype_absolutize_original_styles");return b&&a.setStyle(b),a}function q(a){return a.nodeName.toUpperCase()==="BODY"}function r(a){return a.nodeName.toUpperCase()==="HTML"}function s(a){return a.nodeType===Node.DOCUMENT_NODE}function t(a){return a!==document.body&&!Element.descendantOf(a,document.body)}var e=Prototype.K;"currentStyle"in document.documentElement&&(e=function(a){return a.currentStyle.hasLayout||(a.style.zoom=1),a}),Element.Layout=Class.create(Hash,{initialize:function($super,a,b){$super(),this.element=$(a),Element.Layout.PROPERTIES.each(function(a){this._set(a,null)},this),b&&(this._preComputing=!0,this._begin(),Element.Layout.PROPERTIES.each(this._compute,this),this._end(),this._preComputing=!1)},_set:function(a,b){return Hash.prototype.set.call(this,a,b)},set:function(a,b){throw"Properties of Element.Layout are read-only."},get:function($super,a){var b=$super(a);return b===null?this._compute(a):b},_begin:function(){if(this._prepared)return;var a=this.element;if(d(a)){this._prepared=!0;return}var c={position:a.style.position||"",width:a.style.width||"",visibility:a.style.visibility||"",display:a.style.display||""};a.store("prototype_original_styles",c);var e=a.getStyle("position"),f=a.getStyle("width");if(f==="0px"||f===null)a.style.display="block",f=a.getStyle("width");var g=e==="fixed"?document.viewport:a.parentNode;a.setStyle({position:"absolute",visibility:"hidden",display:"block"});var h=a.getStyle("width"),i;if(f&&h===f)i=b(a,"width",g);else if(e==="absolute"||e==="fixed")i=b(a,"width",g);else{var j=a.parentNode,k=$(j).getLayout();i=k.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}a.setStyle({width:i+"px"}),this._prepared=!0},_end:function(){var a=this.element,b=a.retrieve("prototype_original_styles");a.store("prototype_original_styles",null),a.setStyle(b),this._prepared=!1},_compute:function(a){var b=Element.Layout.COMPUTATIONS;if(a in b)return this._set(a,b[a].call(this,this.element));throw"Property not found."},toObject:function(){var a=$A(arguments),b=a.length===0?Element.Layout.PROPERTIES:a.join(" ").split(" "),c={};return b.each(function(a){if(!Element.Layout.PROPERTIES.include(a))return;var b=this.get(a);b!=null&&(c[a]=b)},this),c},toHash:function(){var a=this.toObject.apply(this,arguments);return new Hash(a)},toCSS:function(){var a=$A(arguments),b=a.length===0?Element.Layout.PROPERTIES:a.join(" ").split(" "),c={};return b.each(function(a){if(!Element.Layout.PROPERTIES.include(a))return;if(Element.Layout.COMPOSITE_PROPERTIES.include(a))return;var b=this.get(a);b!=null&&(c[f(a)]=b+"px")},this),c},inspect:function(){return"#<Element.Layout>"}}),Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(a){this._preComputing||this._begin();var b=this.get("border-box-height");if(b<=0)return this._preComputing||this._end(),0;var c=this.get("border-top"),d=this.get("border-bottom"),e=this.get("padding-top"),f=this.get("padding-bottom");return this._preComputing||this._end(),b-c-d-e-f},width:function(a){this._preComputing||this._begin();var b=this.get("border-box-width");if(b<=0)return this._preComputing||this._end(),0;var c=this.get("border-left"),d=this.get("border-right"),e=this.get("padding-left"),f=this.get("padding-right");return this._preComputing||this._end(),b-c-d-e-f},"padding-box-height":function(a){var b=this.get("height"),c=this.get("padding-top"),d=this.get("padding-bottom");return b+c+d},"padding-box-width":function(a){var b=this.get("width"),c=this.get("padding-left"),d=this.get("padding-right");return b+c+d},"border-box-height":function(a){this._preComputing||this._begin();var b=a.offsetHeight;return this._preComputing||this._end(),b},"border-box-width":function(a){this._preComputing||this._begin();var b=a.offsetWidth;return this._preComputing||this._end(),b},"margin-box-height":function(a){var b=this.get("border-box-height"),c=this.get("margin-top"),d=this.get("margin-bottom");return b<=0?0:b+c+d},"margin-box-width":function(a){var b=this.get("border-box-width"),c=this.get("margin-left"),d=this.get("margin-right");return b<=0?0:b+c+d},top:function(a){var b=a.positionedOffset();return b.top},bottom:function(a){var b=a.positionedOffset(),c=a.getOffsetParent(),d=c.measure("height"),e=this.get("border-box-height");return d-e-b.top},left:function(a){var b=a.positionedOffset();return b.left},right:function(a){var b=a.positionedOffset(),c=a.getOffsetParent(),d=c.measure("width"),e=this.get("border-box-width");return d-e-b.left},"padding-top":function(a){return b(a,"paddingTop")},"padding-bottom":function(a){return b(a,"paddingBottom")},"padding-left":function(a){return b(a,"paddingLeft")},"padding-right":function(a){return b(a,"paddingRight")},"border-top":function(a){return b(a,"borderTopWidth")},"border-bottom":function(a){return b(a,"borderBottomWidth")},"border-left":function(a){return b(a,"borderLeftWidth")},"border-right":function(a){return b(a,"borderRightWidth")},"margin-top":function(a){return b(a,"marginTop")},"margin-bottom":function(a){return b(a,"marginBottom")},"margin-left":function(a){return b(a,"marginLeft")},"margin-right":function(a){return b(a,"marginRight")}}}),"getBoundingClientRect"in document.documentElement&&Object.extend(Element.Layout.COMPUTATIONS,{right:function(a){var b=e(a.getOffsetParent()),c=a.getBoundingClientRect(),d=b.getBoundingClientRect();return(d.right-c.right).round()},bottom:function(a){var b=e(a.getOffsetParent()),c=a.getBoundingClientRect(),d=b.getBoundingClientRect();return(d
.bottom-c.bottom).round()}}),Element.Offset=Class.create({initialize:function(a,b){this.left=a.round(),this.top=b.round(),this[0]=this.left,this[1]=this.top},relativeTo:function(a){return new Element.Offset(this.left-a.left,this.top-a.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}}),Prototype.Browser.IE?(j=j.wrap(function(a,b){b=$(b);if(s(b)||t(b)||q(b)||r(b))return $(document.body);var c=b.getStyle("position");if(c!=="static")return a(b);b.setStyle({position:"relative"});var d=a(b);return b.setStyle({position:c}),d}),l=l.wrap(function(a,b){b=$(b);if(!b.parentNode)return new Element.Offset(0,0);var c=b.getStyle("position");if(c!=="static")return a(b);var d=b.getOffsetParent();d&&d.getStyle("position")==="fixed"&&e(d),b.setStyle({position:"relative"});var f=a(b);return b.setStyle({position:c}),f})):Prototype.Browser.Webkit&&(k=function(a){a=$(a);var b=0,c=0;do{b+=a.offsetTop||0,c+=a.offsetLeft||0;if(a.offsetParent==document.body&&Element.getStyle(a,"position")=="absolute")break;a=a.offsetParent}while(a);return new Element.Offset(c,b)}),Element.addMethods({getLayout:g,measure:h,getDimensions:i,getOffsetParent:j,cumulativeOffset:k,positionedOffset:l,cumulativeScrollOffset:m,viewportOffset:n,absolutize:o,relativize:p}),"getBoundingClientRect"in document.documentElement&&Element.addMethods({viewportOffset:function(a){a=$(a);if(t(a))return new Element.Offset(0,0);var b=a.getBoundingClientRect(),c=document.documentElement;return new Element.Offset(b.left-c.clientLeft,b.top-c.clientTop)}})}(),window.$$=function(){var a=$A(arguments).join(", ");return Prototype.Selector.select(a,document)},Prototype.Selector=function(){function a(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function b(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function c(a,b,c){c=c||0;var d=Prototype.Selector.match,e=a.length,f=0,g;for(g=0;g<e;g++)if(d(a[g],b)&&c==f++)return Element.extend(a[g])}function d(a){for(var b=0,c=a.length;b<c;b++)Element.extend(a[b]);return a}var e=Prototype.K;return{select:a,match:b,find:c,extendElements:Element.extend===e?e:d,extendElement:Element.extend}}(),Prototype._original_property=window.Sizzle,function(){function m(a,b,c,d,e,f){var g=a=="previousSibling"&&!f;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(j){g&&j.nodeType===1&&(j.sizcache=c,j.sizset=h),j=j[a];var k=!1;while(j){if(j.sizcache===c){k=d[j.sizset];break}j.nodeType===1&&!f&&(j.sizcache=c,j.sizset=h);if(j.nodeName===b){k=j;break}j=j[a]}d[h]=k}}}function n(a,b,c,d,e,g){var h=a=="previousSibling"&&!g;for(var i=0,j=d.length;i<j;i++){var k=d[i];if(k){h&&k.nodeType===1&&(k.sizcache=c,k.sizset=i),k=k[a];var l=!1;while(k){if(k.sizcache===c){l=d[k.sizset];break}if(k.nodeType===1){g||(k.sizcache=c,k.sizset=i);if(typeof b!="string"){if(k===b){l=!0;break}}else if(f.filter(b,[k]).length>0){l=k;break}}k=k[a]}d[i]=l}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,b=0,c=Object.prototype.toString,d=!1,e=!0;[0,0].sort(function(){return e=!1,0});var f=function(b,d,e,i){e=e||[];var k=d=d||document;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var l=[],m,n,r,s,t,u,v=!0,w=p(d),x=b;while((a.exec(""),m=a.exec(x))!==null){x=m[3],l.push(m[1]);if(m[2]){u=m[3];break}}if(l.length>1&&h.exec(b))if(l.length===2&&g.relative[l[0]])n=q(l[0]+l[1],d);else{n=g.relative[l[0]]?[d]:f(l.shift(),d);while(l.length)b=l.shift(),g.relative[b]&&(b+=l.shift()),n=q(b,n)}else{if(!i&&l.length>1&&d.nodeType===9&&!w&&g.match.ID.test(l[0])&&!g.match.ID.test(l[l.length-1])){var y=f.find(l.shift(),d,w);d=y.expr?f.filter(y.expr,y.set)[0]:y.set[0]}if(d){var y=i?{expr:l.pop(),set:j(i)}:f.find(l.pop(),l.length===1&&(l[0]==="~"||l[0]==="+")&&d.parentNode?d.parentNode:d,w);n=y.expr?f.filter(y.expr,y.set):y.set,l.length>0?r=j(n):v=!1;while(l.length){var z=l.pop(),A=z;g.relative[z]?A=l.pop():z="",A==null&&(A=d),g.relative[z](r,A,w)}}else r=l=[]}r||(r=n);if(!r)throw"Syntax error, unrecognized expression: "+(z||b);if(c.call(r)==="[object Array]")if(!v)e.push.apply(e,r);else if(d&&d.nodeType===1)for(var B=0;r[B]!=null;B++)r[B]&&(r[B]===!0||r[B].nodeType===1&&o(d,r[B]))&&e.push(n[B]);else for(var B=0;r[B]!=null;B++)r[B]&&r[B].nodeType===1&&e.push(n[B]);else j(r,e);return u&&(f(u,k,e,i),f.uniqueSort(e)),e};f.uniqueSort=function(a){if(l){d=e,a.sort(l);if(d)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},f.matches=function(a,b){return f(a,null,null,b)},f.find=function(a,b,c){var d,e;if(!a)return[];for(var f=0,h=g.order.length;f<h;f++){var i=g.order[f],e;if(e=g.leftMatch[i].exec(a)){var j=e[1];e.splice(1,1);if(j.substr(j.length-1)!=="\\"){e[1]=(e[1]||"").replace(/\\/g,""),d=g.find[i](e,b,c);if(d!=null){a=a.replace(g.match[i],"");break}}}}return d||(d=b.getElementsByTagName("*")),{set:d,expr:a}},f.filter=function(a,b,c,d){var e=a,f=[],h=b,i,j,k=b&&b[0]&&p(b[0]);while(a&&b.length){for(var l in g.filter)if((i=g.match[l].exec(a))!=null){var m=g.filter[l],n,o;j=!1,h==f&&(f=[]);if(g.preFilter[l]){i=g.preFilter[l](i,h,c,f,d,k);if(!i)j=n=!0;else if(i===!0)continue}if(i)for(var q=0;(o=h[q])!=null;q++)if(o){n=m(o,i,q,h);var r=d^!!n;c&&n!=null?r?j=!0:h[q]=!1:r&&(f.push(o),j=!0)}if(n!==undefined){c||(h=f),a=a.replace(g.match[l],"");if(!j)return[];break}}if(a==e){if(j==null)throw"Syntax error, unrecognized expression: "+a;break}e=a}return h};var g=f.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")}},relative:{"+":function(a,b,c){var d=typeof b=="string",e=d&&!/\W/.test(b),g=d&&!e;e&&!c&&(b=b.toUpperCase());for(var h=0,i=a.length,j;h<i;h++)if(j=a[h]){while((j=j.previousSibling)&&j.nodeType!==1);a[h]=g||j&&j.nodeName===b?j||!1:j===b}g&&f.filter(b,a,!0)},">":function(a,b,c){var d=typeof b=="string";if(d&&!/\W/.test(b)){b=c?b:b.toUpperCase();for(var e=0,g=a.length;e<g;e++){var h=a[e];if(h){var i=h.parentNode;a[e]=i.nodeName===b?i:!1}}}else{for(var e=0,g=a.length;e<g;e++){var h=a[e];h&&(a[e]=d?h.parentNode:h.parentNode===b)}d&&f.filter(b,a,!0)}},"":function(a,c,d){var e=b++,f=n;if(!/\W/.test(c)){var g=c=d?c:c.toUpperCase();f=m}f("parentNode",c,e,a,g,d)},"~":function(a,c,d){var e=b++,f=n;if(typeof c=="string"&&!/\W/.test(c)){var g=c=d?c:c.toUpperCase();f=m}f("previousSibling",c,e,a,g,d)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d?[d]:[]}},NAME:function(a,b,c){if(typeof b.getElementsByName!="undefined"){var d=[],e=b.getElementsByName(a[1]);for(var f=0,g=e.length;f<g;f++)e[f].getAttribute("name")===a[1]&&d.push(e[f]);return d.length===0?null:d}},TAG:function(a,b){return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(/\\/g,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a,b){for(var c=0;b[c]===!1;c++);return b[c]&&p(b[c])?a[1]:a[1].toUpperCase()},CHILD:function(a){if(a[1]=="nth"){var c=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(a[2]=="even"&&"2n"||a[2]=="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=c[1]+(c[2]||1)-0,a[3]=c[3]-0}return a[0]=b++,a},ATTR:function(a,b,c,d,e,f){var h=a[1].replace(/\\/g,"");return!f&&g.attrMap[h]&&(a[1]=g.attrMap[h]),a[2]==="~="&&(a[4]=" "+a[4]+" "),a},PSEUDO:function(b,c,d,e,h){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=f(b[3],null,null,c);else{var i=f.filter(b[3],c,d,!0^h);return d||e.push.apply(e,i),!1}else if(g.match.POS.test(b[0])||g.match.CHILD.test(b[0]))return!0;return b},POS:function(a){return a.unshift(!0),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){return a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!f(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toUpperCase()==="BUTTON"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},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=g.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||"").indexOf(b[3])>=0;if(e==="not"){var h=b[3];for(var c=0,i=h.length;c<i;c++)if(h[c]===a)return!1;return!0}},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c=="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e==1&&f==0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e==0?j==0:j%e==0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=g.attrHandle[c]?g.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],h=b[4];return d==null?f==="!=":f==="="?e===h:f==="*="?e.indexOf(h)>=0:f==="~="?(" "+e+" ").indexOf(h)>=0:h?f==="!="?e!=h:f==="^="?e.indexOf(h)===0:f==="$="?e.substr(e.length-h.length)===h:f==="|="?e===h||e.substr(0,h.length+1)===h+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=g.setFilters[e];if(f)return f(a,c,b,d)}}},h=g.match.POS;for(var i in g.match)g.match[i]=new RegExp(g.match[i].source+/(?![^\[]*\])(?![^\(]*\))/.source),g.leftMatch[i]=new RegExp(/(^(?:.|\r|\n)*?)/.source+g.match[i].source);var j=function(a,b){return a=Array.prototype.slice.call(a,0),b?(b.push.apply(b,a),b):a};try{Array.prototype.slice.call(document.documentElement.childNodes,0)}catch(k){j=function(a,b){var d=b||[];if(c.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=0,f=a.length;e<f;e++)d.push(a[e]);else for(var e=0;a[e];e++)d.push(a[e]);return d}}var l;document.documentElement.compareDocumentPosition?l=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a==b&&(d=!0),0;var c=a.compareDocumentPosition(b)&4?-1:a===b?0:1;return c===0&&(d=!0),c}:"sourceIndex"in document.documentElement?l=function(a,b){if(!a.sourceIndex||!b.sourceIndex)return a==b&&(d=!0),0;var c=a.sourceIndex-b.sourceIndex;return c===0&&(d=!0),c}:document.createRange&&(l=function(a,b){if(!a.ownerDocument||!b.ownerDocument)return a==b&&(d=!0),0;var c=a.ownerDocument.createRange(),e=b.ownerDocument.createRange();c.setStart(a,0),c.setEnd(a,0),e.setStart(b,0),e.setEnd(b,0);var f=c.compareBoundaryPoints(Range.START_TO_END,e);return f===0&&(d=!0),f}),function(){var a=document.createElement("div"),b="script"+(new Date).getTime();a.innerHTML="<a name='"+b+"'/>";var c=document.documentElement;c.insertBefore(a,c.firstChild),!document.getElementById(b)||(g.find.ID=function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d?d.id===a[1]||typeof d.getAttributeNode!="undefined"&&d.getAttributeNode("id").nodeValue===a[1]?[d]:undefined:[]}},g.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),c.removeChild(a),c=a=null}(),function(){var a=document.createElement("div");a.appendChild(document.createComment("")),a.getElementsByTagName("*").length>0&&(g.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")!=="#"&&(g.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),document.querySelectorAll&&function(){var a=f,b=document.createElement("div");b.innerHTML="<p class='TEST'></p>";if(b.querySelectorAll&&b.querySelectorAll(".TEST").length===0)return;f=function(b,c,d,e){c=c||document;if(!e&&c.nodeType===9&&!p(c))try{return j(c.querySelectorAll(b),d)}catch(f){}return a(b,c,d,e)};for(var c in a)f[c]=a[c];b=null}(),document.getElementsByClassName&&document.documentElement.getElementsByClassName&&function(){var a=document.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName("e").length===0)return;a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;g.order.splice(1,0,"CLASS"),g.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}();var o=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16}:function(a,b){return a!==b&&(a.contains?a.contains(b):!0)},p=function(a){return a.nodeType===9&&a.documentElement.nodeName!=="HTML"||!!a.ownerDocument&&a.ownerDocument.documentElement.nodeName!=="HTML"},q=function(a,b){var c=[],d="",e,h=b.nodeType?[b]:b;while(e=g.match.PSEUDO.exec(a))d+=e[0],a=a.replace(g.match.PSEUDO,"");a=g.relative[a]?a+"*":a;for(var i=0,j=h.length;i<j;i++)f(a,h[i],c);return f.filter(d,c)};window.Sizzle=f}(),function(a){function c(c,d){return b(a(c,d||document))}function d(b,c){return a.matches(c,[b]).length==1}var b=Prototype.Selector.extendElements;Prototype.Selector.engine=a,Prototype.Selector.select=c,Prototype.Selector.match=d}(Sizzle),window.Sizzle=Prototype._original_property,delete Prototype._original_property;var Form={reset:function(a){return a=$(a),a.reset(),a},serializeElements:function(a,b){typeof b!="object"?b={hash:!!b}:Object.isUndefined(b.hash)&&(b.hash=!0);var c,d,e=!1,f=b.submit,g,h;return b.hash?(h={},g=function(a,b,c){return b in a?(Object.isArray(a[b])||(a[b]=[a[b]]),a[b].push(c)):a[b]=c,a}):(h="",g=function(a,b,c){return a+(a?"&":"")+encodeURIComponent(b)+"="+encodeURIComponent(c)}),a.inject(h,function(a,b){return!b.disabled&&b.name&&(c=b.name,d=$(b).getValue(),d!=null&&b.type!="file"&&(b.type!="submit"||!e&&f!==!1&&(!f||c==f)&&(e=!0))&&(a=g(a,c,d))),a})}};Form.Methods={serialize:function(a,b){return Form.serializeElements(Form.getElements(a),b)},getElements:function(a){var b=$(a).getElementsByTagName("*"),c,d=[],e=Form.Element.Serializers;for(var f=0;c=b[f];f++)d.push(c);return d.inject([],function(a,b){return e[b.tagName.toLowerCase()]&&a.push(Element.extend(b)),a})},getInputs:function(a,b,c){a=$(a);var d=a.getElementsByTagName("input");if(!b&&!c)return $A(d).map(Element.extend);for(var e=0,f=[],g=d.length;e<g;e++){var h=d[e];if(b&&h.type!=b||c&&h.name!=c)continue;f.push(Element.extend(h))}return f},disable:function(a){return a=$(a),Form.getElements(a).invoke("disable"),a},enable:function(a){return a=$(a),Form.getElements(a).invoke("enable"),a},findFirstElement:function(a){var b=$(a).getElements().findAll(function(a){return"hidden"!=a.type&&!a.disabled}),c=b.findAll(function(a){return a.hasAttribute("tabIndex")&&a.tabIndex>=0}).sortBy(function(a){return a.tabIndex}).first();return c?c:b.find(function(a){return/^(?:input|select|textarea)$/i.test(a.tagName)})},focusFirstElement:function(a){a=$(a);var b=a.findFirstElement();return b&&b.activate(),a},request:function(a,b){a=$(a),b=Object.clone(b||{});var c=b.parameters,d=a.readAttribute("action")||"";return d.blank()&&(d=window.location.href),b.parameters=a.serialize(!0),c&&(Object.isString(c)&&(c=c.toQueryParams()),Object.extend(b.parameters,c)),a.hasAttribute("method")&&!b.method&&(b.method=a.method),new Ajax.Request(d,b)}},Form.Element={focus:function(a){return $(a).focus(),a},select:function(a){return $(a).select(),a}},Form.Element.Methods={serialize:function(a){a=$(a);if(!a.disabled&&a.name){var b=a.getValue();if(b!=undefined){var c={};return c[a.name]=b,Object.toQueryString(c)}}return""},getValue:function(a){a=$(a);var b=a.tagName.toLowerCase();return Form.Element.Serializers[b](a)},setValue:function(a,b){a=$(a);var c=a.tagName.toLowerCase();return Form.Element.Serializers[c](a,b),a},clear:function(a){return $(a).value="",a},present:function(a){return $(a).value!=""},activate:function(a){a=$(a);try{a.focus(),a.select&&(a.tagName.toLowerCase()!="input"||!/^(?:button|reset|submit)$/i.test(a.type))&&a.select()}catch(b){}return a},disable:function(a){return a=$(a),a.disabled=!0,a},enable:function(a){return a=$(a),a.disabled=!1,a}};var Field=Form.Element,$F=Form.Element.Methods.getValue;Form.Element.Serializers=function(){function a(a,d){switch(a.type.toLowerCase()){case"checkbox":case"radio":return b(a,d);default:return c(a,d)}}function b(a,b){if(Object.isUndefined(b))return a.checked?a.value:null;a.checked=!!b}function c(a,b){if(Object.isUndefined(b))return a.value;a.value=b}function d(a,b){if(Object.isUndefined(b))return(a.type==="select-one"?e:f)(a);var c,d,g=!Object.isArray(b);for(var h=0,i=a.length;h<i;h++){c=a.options[h],d=this.optionValue(c);if(g){if(d==b){c.selected=!0;return}}else c.selected=b.include(d)}}function e(a){var b=a.selectedIndex;return b>=0?g(a.options[b]):null}function f(a){var b,c=a.length;if(!c)return null;for(var d=0,b=[];d<c;d++){var e=a.options[d];e.selected&&b.push(g(e))}return b}function g(a){return Element.hasAttribute(a,"value")?a.value:a.text}return{input:a,inputSelector:b,textarea:c,select:d,selectOne:e,selectMany:f,optionValue:g,button:c}}(),Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,a,b,c){$super(c,b),this.element=$(a),this.lastValue=this.getValue()},execute:function(){var a=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(a)?this.lastValue!=a:String(this.lastValue)!=String(a))this.callback(this.element,a),this.lastValue=a}}),Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element)}}),Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element)}}),Abstract.EventObserver=Class.create({initialize:function(a,b){this.element=$(a),this.callback=b,this.lastValue=this.getValue(),this.element.tagName.toLowerCase()=="form"?this.registerFormCallbacks():this.registerCallback(this.element)},onElementEvent:function(){var a=this.getValue();this.lastValue!=a&&(this.callback(this.element,a),this.lastValue=a)},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this)},registerCallback:function(a){if(a.type)switch(a.type.toLowerCase()){case"checkbox":case"radio":Event.observe(a,"click",this.onElementEvent.bind(this));break;default:Event.observe(a,"change",this.onElementEvent.bind(this))}}}),Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element)}}),Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element)}}),function(){function f(a,b){return a.which?a.which===b+1:a.button===b}function h(a,b){return a.button===g[b]}function i(a,b){switch(b){case 0:return a.which==1&&!a.metaKey;case 1:return a.which==2||a.which==1&&a.metaKey;case 2:return a.which==3;default:return!1}}function j(a){return e(a,0)}function k(a){return e(a,1)}function l(a){return e(a,2)}function m(b){b=a.extend(b);var c=b.target,d=b.type,e=b.currentTarget;return e&&e.tagName&&(d==="load"||d==="error"||d==="click"&&e.tagName.toLowerCase()==="input"&&e.type==="radio")&&(c=e),c.nodeType==Node.TEXT_NODE&&(c=c.parentNode),Element.extend(c)}function n(b,c){var d=a.element(b);if(!c)return d;while(d){if(Object.isElement(d)&&Prototype.Selector.match(d,c))return Element.extend(d);d=d.parentNode}}function o(a){return{x:p(a),y:q(a)}}function p(a){var b=document.documentElement,c=document.body||{scrollLeft:0};return a.pageX||a.clientX+(b.scrollLeft||c.scrollLeft)-(b.clientLeft||0)}function q(a){var b=document.documentElement,c=document.body||{scrollTop:0};return a.pageY||a.clientY+(b.scrollTop||c.scrollTop)-(b.clientTop||0)}function r(b){a.extend(b),b.preventDefault(),b.stopPropagation(),b.stopped=!0}function v(b,d,e){var f=Element.retrieve(b,"prototype_event_registry");Object.isUndefined(f)&&(x.push(b),f=Element.retrieve(b,"prototype_event_registry",$H()));var g=f.get(d);Object.isUndefined(g)&&(g=[],f.set(d,g));if(g.pluck("handler").include(e))return!1;var h;if(d.include(":"))h=function(c){if(Object.isUndefined(c.eventName))return!1;if(c.eventName!==d)return!1;a.extend(c,b),e.call(b,c)};else if(!!c||d!=="mouseenter"&&d!=="mouseleave")h=function(c){a.extend(c,b),e.call(b,c)};else if(d==="mouseenter"||d==="mouseleave")h=function(c){a.extend(c,b);var d=c.relatedTarget;while(d&&d!==b)try{d=d.parentNode}catch(f){d=b}if(d===b)return;e.call(b,c)};return h.handler=e,g.push(h),h}function w(){for(var b=0,c=x.length;b<c;b++)a.stopObserving(x[b]),x[b]=null}function A(a,b,c){a=$(a);var d=v(a,b,c);if(!d)return a;if(b.include(":"))a.addEventListener?a.addEventListener("dataavailable",d,!1):(a.attachEvent("ondataavailable",d),a.attachEvent("onlosecapture",d));else{var e=y(b);a.addEventListener?a.addEventListener(e,d,!1):a.attachEvent("on"+e,d)}return a}function B(a,b,c){a=$(a);var d=Element.retrieve(a,"prototype_event_registry");if(!d)return a;if(!b)return d.each(function(b){var c=b.key;B(a,c)}),a;var e=d.get(b);if(!e)return a;if(!c)return e.each(function(c){B(a,b,c.handler)}),a;var f=e.length,g;while(f--)if(e[f].handler===c){g=e[f];break}if(!g)return a;if(b.include(":"))a.removeEventListener?a.removeEventListener("dataavailable",g,!1):(a.detachEvent("ondataavailable",g),a.detachEvent("onlosecapture",g));else{var h=y(b);a.removeEventListener?a.removeEventListener(h,g,!1):a.detachEvent("on"+h,g)}return d.set(b,e.without(g)),a}function C(b,c,d,e){b=$(b),Object.isUndefined(e)&&(e=!0),b==document&&document.createEvent&&!b.dispatchEvent&&(b=document.documentElement);var f;return document.createEvent?(f=document.createEvent("HTMLEvents"),f.initEvent("dataavailable",e,!0)):(f=document.createEventObject(),f.eventType=e?"ondataavailable":"onlosecapture"),f.eventName=c,f.memo=d||{},document.createEvent?b.dispatchEvent(f):b.fireEvent(f.eventType,f),a.extend(f)}function D(b,c,d,e){return b=$(b),Object.isFunction(d)&&Object.isUndefined(e)&&(e=d,d=null),(new a.Handler(b,c,d,e)).start()}var a={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,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{}},b=document.documentElement,c="onmouseenter"in b&&"onmouseleave"in b,d=function(a){return!1};window.attachEvent&&(window.addEventListener?d=function(a){return!(a instanceof window.Event)}:d=function(a){return!0});var e,g={0:1,1:4,2:2};window.attachEvent?window.addEventListener?e=function(a,b){return d(a)?h(a,b):f(a,b)}:e=h:Prototype.Browser.WebKit?e=i:e=f,a.Methods={isLeftClick:j,isMiddleClick:k,isRightClick:l,element:m,findElement:n,pointer:o,pointerX:p,pointerY:q,stop:r};var s=Object.keys(a.Methods).inject({},function(b,c){return b[c]=a.Methods[c].methodize(),b});if(window.attachEvent){function t(a){var b;switch(a.type){case"mouseover":case"mouseenter":b=a.fromElement;break;case"mouseout":case"mouseleave":b=a.toElement;break;default:return null}return Element.extend(b)}var u={stopPropagation:function(){this.cancelBubble=!0},preventDefault:function(){this.returnValue=!1},inspect:function(){return"[object Event]"}};a.extend=function(b,c){if(!b)return!1;if(!d(b))return b;if(b._extendedByPrototype)return b;b._extendedByPrototype=Prototype.emptyFunction;var e=a.pointer(b);return Object.extend(b,{target:b.srcElement||c,relatedTarget:t(b),pageX:e.x,pageY:e.y}),Object.extend(b,s),Object.extend(b,u),b}}else a.extend=Prototype.K;window.addEventListener&&(a.prototype=window.Event.prototype||document.createEvent("HTMLEvents").__proto__,Object.extend(a.prototype,s));var x=[];Prototype.Browser.IE&&window.attachEvent("onunload",w),Prototype.Browser.WebKit&&window.addEventListener("unload",Prototype.emptyFunction,!1);var y=Prototype.K,z={mouseenter:"mouseover",mouseleave:"mouseout"};c||(y=function(a){return z[a]||a}),a.Handler=Class.create({initialize:function(a,b,c,d){this.element=$(a),this.eventName=b,this.selector=c,this.callback=d,this.handler=this.handleEvent.bind(this)},start:function(){return a.observe(this.element,this.eventName,this.handler),this},stop:function(){return a.stopObserving(this.element,this.eventName,this.handler),this},handleEvent:function(b){var c=a.findElement(b,this.selector);c&&this.callback.call(this.element,b,c)}}),Object.extend(a,a.Methods),Object.extend(a,{fire:C,observe:A,stopObserving:B,on:D}),Element.addMethods({fire:C,observe:A,stopObserving:B,on:D}),Object.extend(document,{fire:C.methodize(),observe:A.methodize(),stopObserving:B.methodize(),on:D.methodize(),loaded:!1}),window.Event?Object.extend(window.Event,a):window.Event=a}(),function(){function b(){if(document.loaded)return;a&&window.clearTimeout(a),document.loaded=!0,document.fire("dom:loaded")}function c(){document.readyState==="complete"&&(document.stopObserving("readystatechange",c),b())}function d(){try{document.documentElement.doScroll("left")}catch(c){a=d.defer();return}b()}var a;document.addEventListener?document.addEventListener("DOMContentLoaded",b,!1):(document.observe("readystatechange",c),window==top&&(a=d.defer())),Event.observe(window,"load",b)}(),Element.addMethods(),Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(a,b){return Element.insert(a,{before:b})},Top:function(a,b){return Element.insert(a,{top:b})},Bottom:function(a,b){return Element.insert(a,{bottom:b})},After:function(a,b){return Element.insert(a,{after:b})}},$continue=new Error('"throw $continue" is deprecated, use "return" instead'),Position={includeScrollOffsets:!1,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},within:function(a,b,c){return this.includeScrollOffsets?this.withinIncludingScrolloffsets(a,b,c):(this.xcomp=b,this.ycomp=c,this.offset=Element.cumulativeOffset(a),c>=this.offset[1]&&c<this.offset[1]+a.offsetHeight&&b>=this.offset[0]&&b<this.offset[0]+a.offsetWidth)},withinIncludingScrolloffsets:function(a,b,c){var d=Element.cumulativeScrollOffset(a);return this.xcomp=b+d[0]-this.deltaX,this.ycomp=c+d[1]-this.deltaY,this.offset=Element.cumulativeOffset(a),this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+a.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+a.offsetWidth},overlap:function(a,b){if(!a)return 0;if(a=="vertical")return(this.offset[1]+b.offsetHeight-this.ycomp)/b.offsetHeight;if(a=="horizontal")return(this.offset[0]+b.offsetWidth-this.xcomp)/b.offsetWidth},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(a){return Position.prepare(),Element.absolutize(a)},relativize:function(a){return Position.prepare(),Element.relativize(a)},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(a,b,c){return c=c||{},Element.clonePosition(b,a,c)}};document.getElementsByClassName||(document.getElementsByClassName=function(a){function b(a){return a.blank()?null:"[contains(concat(' ', @class, ' '), ' "+a+" ')]"}return a.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(a,c){c=c.toString().strip();var d=/\s/.test(c)?$w(c).map(b).join(""):b(c);return d?document._getElementsByXPath(".//*"+d,a):[]}:function(a,b){b=b.toString().strip();var c=[],d=/\s/.test(b)?$w(b):null;if(!d&&!b)return c;var e=$(a).getElementsByTagName("*");b=" "+b+" ";for(var f=0,g,h;g=e[f];f++)g.className&&(h=" "+g.className+" ")&&(h.include(b)||d&&d.all(function(a){return!a.toString().blank()&&h.include(" "+a+" ")}))&&c.push(Element.extend(g));return c},function(a,b){return $(b||document.body).getElementsByClassName(a)}}(Element.Methods)),Element.ClassNames=Class.create(),Element.ClassNames.prototype={initialize:function(a){this.element=$(a)},_each:function(a){this.element.className.split(/\s+/).select(function(a){return a.length>0})._each(a)},set:function(a){this.element.className=a},add:function(a){if(this.include(a))return;this.set($A(this).concat(a).join(" "))},remove:function(a){if(!this.include(a))return;this.set($A(this).without(a).join(" "))},toString:function(){return $A(this).join(" ")}},Object.extend(Element.ClassNames.prototype,Enumerable),function(){window.Selector=Class.create({initialize:function(a){this.expression=a.strip()},findElements:function(a){return Prototype.Selector.select(this.expression,a)},match:function(a){return Prototype.Selector.match(a,this.expression)},toString:function(){return this.expression},inspect:function(){return"#<Selector: "+this.expression+">"}}),Object.extend(Selector,{matchElements:function(a,b){var c=Prototype.Selector.match,d=[];for(var e=0,f=a.length;e<f;e++){var g=a[e];c(g,b)&&d.push(Element.extend(g))}return d},findElement:function(a,b,c){c=c||0;var d=0,e;for(var f=0,g=a.length;f<g;f++){e=a[f];if(Prototype.Selector.match(e,b)&&c===d++)return Element.extend(e)}},findChildElements:function(a,b){var c=b.toArray().join(", ");return Prototype.Selector.select(c,a||document)}})}(),Svgvml={},LazyLoad=function(){function f(b,c){var d=a.createElement(b),e;for(e in c)c.hasOwnProperty(e)&&d.setAttribute(e,c[e]);return d}function g(a){var b=c[a];if(!b)return;var e=b.callback,f=b.urls;f.shift(),f.length||(e&&e.call(b.scope||window,b.obj),c[a]=null,d[a].length&&i(a))}function h(){if(e)return;var a=navigator.userAgent,b=parseFloat,c;e={gecko:0,ie:0,opera:0,webkit:0},c=a.match(/AppleWebKit\/(\S*)/);if(c&&c[1])e.webkit=b(c[1]);else{c=a.match(/MSIE\s([^;]*)/);if(c&&c[1])e.ie=b(c[1]);else if(/Gecko\/(\S*)/.test(a))e.gecko=1,c=a.match(/rv:([^\s\)]*)/),c&&c[1]&&(e.gecko=b(c[1]));else if(c=a.match(/Opera\/(\S*)/))e.opera=b(c[1])}}function i(i,j,k,l,m){var n,o,p,q,r;h();if(j){j=j.constructor===Array?j:[j];if(i==="css"||e.gecko||e.opera)d[i].push({urls:[].concat(j),callback:k,obj:l,scope:m});else for(n=0,o=j.length;n<o;++n)d[i].push({urls:[j[n]],callback:n===o-1?k:null,obj:l,scope:m})}if(c[i]||!(q=c[i]=d[i].shift()))return;b=b||a.getElementsByTagName("head")[0],j=q.urls;for(n=0,o=j.length;n<o;++n)r=j[n],i==="css"?p=f("link",{href:r,rel:"stylesheet",type:"text/css"}):p=f("script",{src:r}),e.ie?p.onreadystatechange=function(){var a=this.readyState;if(a==="loaded"||a==="complete")this.onreadystatechange=null,g(i)}:i==="css"&&(e.gecko||e.webkit)?setTimeout(function(){g(i)},50*o):p.onload=p.onerror=function(){g(i)},b.appendChild(p)}var a=document,b,c={},d={css:[],js:[]},e;return{css:function(a,b,c,d){i("css",a,b,c,d)},js:function(a,b,c,d){i("js",a,b,c,d)}}}(),Svgvml.constants={version:"0.3.0"},Svgvml.Matrix2D=Class.create({initialize:function(a){this.xx=1,this.xy=0,this.dx=0,this.yx=0,this.yy=1,this.dy=0,Object.extend(this,a)},translate:function(a,b){return this.multiply(new Svgvml.Matrix2D({dx:a,dy:b})),this},scale:function(a,b){return this.multiply(new Svgvml.Matrix2D({xx:a,yy:b})),this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a);return this.multiply(new Svgvml.Matrix2D({xx:b,xy:c,yx:-c,yy:b})),this},skewX:function(
a){var b=Math.tan(a);return this.multiply(new Svgvml.Matrix2D({xy:b})),this},skewY:function(a){var b=Math.tan(a);return this.multiply(new Svgvml.Matrix2D({yx:b})),this},clone:function(){return new Svgvml.Matrix2D(this)},multiply:function(a){var b=this.xx*a.xx+this.xy*a.yx,c=this.xx*a.xy+this.xy*a.yy,d=this.yx*a.xx+this.yy*a.yx,e=this.yx*a.xy+this.yy*a.yy,f=this.xx*a.dx+this.xy*a.dy+this.dx,g=this.yx*a.dx+this.yy*a.dy+this.dy;return this.xx=b,this.xy=c,this.dx=f,this.yx=d,this.yy=e,this.dy=g,this},multiplyPoint:function(a){return{x:this.xx*a.x+this.xy*a.y+this.dx,y:this.yx*a.x+this.yy*a.y+this.dy}},preTransform:function(a){var b=Svgvml.Matrix2D.multiply(a,this);Object.extend(this,b)},postTransform:function(a){var b=Svgvml.Matrix2D.multiply(this,a);Object.extend(this,b)},invert:function(){var a=this.xx*this.yy-this.xy*this.yx,b=new Svgvml.Matrix2D({xx:this.yy/a,xy:-this.xy/a,yx:-this.yx/a,yy:this.xx/a,dx:(this.xy*this.dy-this.yy*this.dx)/a,dy:(this.yx*this.dx-this.xx*this.dy)/a});return b}}),["scale","rotate","skewX","skewY"].each(function(a){Svgvml.Matrix2D.prototype[a+"At"]=function(){var b=$A(arguments),c=b.shift(),d=b.shift();return this.multiply(Svgvml.Matrix2D.translate(c,d).multiply(Svgvml.Matrix2D[a].apply(null,b)).multiply(Svgvml.Matrix2D.translate(-c,-d))),this}}),Svgvml.Matrix2D.multiply=function(a,b){return new Svgvml.Matrix2D({xx:a.xx*b.xx+a.xy*b.yx,xy:a.xx*b.xy+a.xy*b.yy,dx:a.xx*b.dx+a.xy*b.dy+a.dx,yx:a.yx*b.xx+a.yy*b.yx,yy:a.yx*b.xy+a.yy*b.yy,dy:a.yx*b.dx+a.yy*b.dy+a.dy})},Svgvml.Matrix2D.translate=function(a,b){return new Svgvml.Matrix2D({dx:a,dy:b})},Svgvml.Matrix2D.scale=function(a,b){return new Svgvml.Matrix2D({xx:a,yy:b})},Svgvml.Matrix2D.rotate=function(a){var b=Math.cos(a),c=Math.sin(a);return new Svgvml.Matrix2D({xx:b,xy:c,yx:-c,yy:b})},Svgvml.Matrix2D.skewX=function(a){var b=Math.tan(a);return new Svgvml.Matrix2D({xy:b})},Svgvml.Matrix2D.skewY=function(a){var b=Math.tan(a);return new Svgvml.Matrix2D({yx:b})},["scale","rotate","skewX","skewY"].each(function(a){Svgvml.Matrix2D[a+"At"]=function(){var b=$A(arguments),c=b.shift(),d=b.shift();return Svgvml.Matrix2D.translate(c,d).multiply(Svgvml.Matrix2D[a].apply(null,b)).multiply(Svgvml.Matrix2D.translate(-c,-d))}}),Svgvml.colors={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",aqua:"rgb( 0, 255, 255)",aquamarine:"rgb(127, 255, 212)",azure:"rgb(240, 255, 255)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",black:"rgb( 0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb( 0, 0, 255)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",burlywood:"rgb(222, 184, 135)",cadetblue:"rgb( 95, 158, 160)",chartreuse:"rgb(127, 255, 0)",chocolate:"rgb(210, 105, 30)",coral:"rgb(255, 127, 80)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",crimson:"rgb(220, 20, 60)",cyan:"rgb( 0, 255, 255)",darkblue:"rgb( 0, 0, 139)",darkcyan:"rgb( 0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb( 0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb( 85, 107, 47)",darkorange:"rgb(255, 140, 0)",darkorchid:"rgb(153, 50, 204)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkslateblue:"rgb( 72, 61, 139)",darkslategray:"rgb( 47, 79, 79)",darkslategrey:"rgb( 47, 79, 79)",darkturquoise:"rgb( 0, 206, 209)",darkviolet:"rgb(148, 0, 211)",deeppink:"rgb(255, 20, 147)",deepskyblue:"rgb( 0, 191, 255)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb( 30, 144, 255)",firebrick:"rgb(178, 34, 34)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb( 34, 139, 34)",fuchsia:"rgb(255, 0, 255)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",goldenrod:"rgb(218, 165, 32)",gray:"rgb(128, 128, 128)",grey:"rgb(128, 128, 128)",green:"rgb( 0, 128, 0)",greenyellow:"rgb(173, 255, 47)",honeydew:"rgb(240, 255, 240)",hotpink:"rgb(255, 105, 180)",indianred:"rgb(205, 92, 92)",indigo:"rgb( 75, 0, 130)",ivory:"rgb(255, 255, 240)",khaki:"rgb(240, 230, 140)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lightblue:"rgb(173, 216, 230)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightsalmon:"rgb(255, 160, 122)",lightseagreen:"rgb( 32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightyellow:"rgb(255, 255, 224)",lime:"rgb( 0, 255, 0)",limegreen:"rgb( 50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",maroon:"rgb(128, 0, 0)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb( 0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumpurple:"rgb(147, 112, 219)",mediumseagreen:"rgb( 60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb( 0, 250, 154)",mediumturquoise:"rgb( 72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb( 25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navy:"rgb( 0, 0, 128)",oldlace:"rgb(253, 245, 230)",olive:"rgb(128, 128, 0)",olivedrab:"rgb(107, 142, 35)",orange:"rgb(255, 165, 0)",orangered:"rgb(255, 69, 0)",orchid:"rgb(218, 112, 214)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",paleturquoise:"rgb(175, 238, 238)",palevioletred:"rgb(219, 112, 147)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",plum:"rgb(221, 160, 221)",powderblue:"rgb(176, 224, 230)",purple:"rgb(128, 0, 128)",red:"rgb(255, 0, 0)",rosybrown:"rgb(188, 143, 143)",royalblue:"rgb( 65, 105, 225)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb( 46, 139, 87)",seashell:"rgb(255, 245, 238)",sienna:"rgb(160, 82, 45)",silver:"rgb(192, 192, 192)",skyblue:"rgb(135, 206, 235)",slateblue:"rgb(106, 90, 205)",slategray:"rgb(112, 128, 144)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",springgreen:"rgb( 0, 255, 127)",steelblue:"rgb( 70, 130, 180)",tan:"rgb(210, 180, 140)",teal:"rgb( 0, 128, 128)",thistle:"rgb(216, 191, 216)",tomato:"rgb(255, 99, 71)",turquoise:"rgb( 64, 224, 208)",violet:"rgb(238, 130, 238)",wheat:"rgb(245, 222, 179)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellowgreen:"rgb(154, 205, 50)"},Svgvml.defaultAttributes={path:{fill:"none",stroke:Svgvml.colors.black,"stroke-width":"1"},text:{x:0,y:0,fill:Svgvml.colors.black,"fill-opacity":1},polyline:{fill:"none",stroke:Svgvml.colors.black,"stroke-width":"1"},rect:{fill:"none",stroke:Svgvml.colors.black,"stroke-width":"1"},line:{stroke:Svgvml.colors.black,"stroke-width":"1"}},Object.extend(Svgvml,{Renderer:Class.create({initialize:function(){this.surface=new Svgvml.Surface},getSvgNode:function(){return this.surface.node},appendChild:function(a){this.insertBefore(a)},addElement:function(a,b){this.surface.node.insertBefore(a.element,b?b.element?b.element:b:null)},insertAtTop:function(a){this.surface.node.insertBefore(a.element,this.surface.node.firstChild)},moveToFront:function(a){this.surface.node.appendChild(a.element)},moveToBack:function(a){this.surface.node.insertBefore(a.element,this.surface.node.firstChild)},remove:function(){this.surface.node.parentNode.removeChild(this.surface.node)}}),Surface:Class.create({setSize:function(a,b){this.size={width:a,height:b},Element.setStyle(this.node,{width:a+"px",height:b+"px"})}}),create:function(a){return Prototype.Browser.IE?new Svgvml.Vml(a):new Svgvml.Svg(a)},detect:function(a,b){Svgvml.Svg||Svgvml.Vml?a():LazyLoad.js((b?b:"javascripts/")+(Prototype.Browser.IE?"vml":"svg")+".js",a)}}),Svgvml.NotImplemented=function(a){return new Error("Not implemented: "+a)},Svgvml.Shapes=function(){var a=Class.create({getBBox:function(){throw Svgvml.NotImplemented("getBBox")},setPosition:function(a,b){this.setAttribute("x",a),this.setAttribute("y",b)},setAttribute:function(a,b){return this.element.setAttribute(a,b),this},setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},removeAttribute:function(a){this.element.removeAttribute(a)},append:function(a){return this.insertBefore(a),this},insertAtTop:function(a){this.insertBefore(a,a.shapes[0])},insertBefore:function(a,b){a.addElement(this,b)},remove:function(){this.parentGroup&&(this.parentGroup.shapes=this.parentGroup.shapes.filter(function(a){return a!=this}.bind(this))),this.element.parentNode.removeChild(this.element)},getBounds:function(){if(this.element.getAttribute("display")=="none")return null;var a=this.getBBox();return{x:a.x+this.matrix.dx,y:a.y+this.matrix.dy,width:this.matrix.xx*a.width+this.matrix.xy*a.height,height:this.matrix.yx*a.width+this.matrix.yy*a.height}},applyTransform:function(a){this.matrix=a,this.updateTransform()},postTransform:function(a){this.matrix.multiply(a),this.updateTransform()},preTransform:function(a){this.matrix=a.multiply(this.matrix),this.updateTransform()},moveToFront:function(){this.element.parentNode.appendChild(this.element)},moveToBack:function(){var a=this.element.parentNode;a.firstChild!=this.element&&a.insertBefore(this.element,a.firstChild)},observe:function(a,b){Event.observe(this.element,a,b)},stopObserving:function(a,b){Event.stopObserving(this.element,a,b)}}),b={};["translate","scale","skewX","skewY","scaleAt","rotateAt","skewXAt","skewYAt"].each(function(a){b[a]=function(){var b=Svgvml.Matrix2D[a].apply(null,arguments);return this.postTransform(b),this}}),b.rotate=function(a){var b=this.getBBox();return this.rotateAt(b.x+b.width/2,b.y+b.height/2,a)},a.addMethods(b);var c={getBounds:function(){if(!this.shapes||this.shapes.length==0)return{x:0,y:0,width:0,height:0};var a={xmin:Number.POSITIVE_INFINITY,ymin:Number.POSITIVE_INFINITY,xmax:0,ymax:0};$A(this.shapes).each(function(b){var c=b.getBounds();c!=null&&(a.xmin=Math.min(a.xmin,c.x),a.xmax=Math.max(a.xmax,c.x+c.width),a.ymin=Math.min(a.ymin,c.y),a.ymax=Math.max(a.ymax,c.y+c.height))});var b={x:a.xmin,y:a.ymin,width:a.xmax-a.xmin,height:a.ymax-a.ymin};return{x:b.x+this.matrix.dx,y:b.y+this.matrix.dy,width:this.matrix.xx*b.width+this.matrix.xy*b.height,height:this.matrix.yx*b.width+this.matrix.yy*b.height}},empty:function(){this.shapes.invoke("remove"),this.shapes=[]},getBBox:function(){return this.getBounds()}},d=Class.create(a,{initialize:function($super,a,b){$super(a,b,"path"),this.path=""},pathCmd:function(){var a=$A(arguments),b=a.shift(),c=a.shift();return this.path+=c+a.join(b),this.update(),this},reset:function(){this.path="",this.update()}}),e=Class.create(a,{initialize:function($super,a,b){$super(a,b,"text")}}),f=Class.create(a,{initialize:function($super,a,b){$super(a,b,"polyline"),this.points=[]},addPoints:function(a){return this.points=this.points.concat(a),this.update(),this},addPoint:function(a){return this.points.push(a),this.update(),this}}),g=Class.create(a,{initialize:function($super,a,b){$super(a,b,"rect"),this.size={w:0,h:0},this.position={x:0,y:0}},setWidth:function(a){return this.setSize(a,this.size.h)},setHeight:function(a){return this.setSize(this.size.w,a)},setSize:function(a,b){return this.size={w:a,h:b},this.update(),this},setPosition:function(a,b){return this.position={x:a,y:b},this.update(),this}}),h=Class.create(a,{initialize:function($super,a,b){$super(a,b,"line")},setPoints:function(a,b,c,d){return this.points={x1:a,y1:b,x2:c,y2:d},this.update(),this}}),i=Class.create(a,{initialize:function($super,a,b){$super(a,b,"circle"),this.r=0,this.position={x:0,y:0}},setRadius:function(a){return this.r=a,this.update(),this},setPosition:function(a,b){return this.position={x:a,y:b},this.update(),this}}),j=Class.create(a,{initialize:function($super,a,b){$super(a,b,"image"),this.position={x:0,y:0}},setImage:function(a,b,c){return this.image=a,this.size={w:b,h:c},this.update(),this},setPosition:function(a,b){return this.position={x:a,y:b},this.update(),this}}),k=Class.create(a,{initialize:function($super,a,b){$super(a,b,"text")}});return{GroupMixin:c,Shape:a,PathBase:d,TextBase:e,PolylineBase:f,RectangleBase:g,LineBase:h,CircleBase:i,ImageBase:j,TextPathBase:k}}(),Svgvml.pt2px=function(a){return parseFloat(a)*(.35146/25.4)*96};var Javlot={};Javlot.constants={version:"0.4.2",playImage:"img/play.png",playImageSize:{w:21,h:21},pauseImage:"img/pause.png",pauseImageSize:{w:21,h:21}},Javlot.Palette=function(){var a={brown:["#dfdfdf","#dcd2bc","#ccbe9e","#a99c7e","#7f7154","#5f4f30","#000000"],blue:["#dfdfdf","#c4e6ff","#5accfe","#009ee4","#005de4","#003f97","#000000"],red:["#dfdfdf","#f8ff4f","#ffc455","#ff8912","#ff5915","#d01011","#95000c","#000000"],greenyellowred:["#0a2500","#1a5d00","#247f00","#34b202","#8cee00","#e4ff00","#ffff2e","#ffc550","#e58a01","#e46702","#c02600","#920000"],bluepink:["#cff0ff","#a1e2ff","#62cfff","#01a9f3","#0074c6","#034db0","#563abf","#9478ff","#cc8bff","#ff89ed","#ffd0ec","#ffecf7"]},b=function(){this.reset();var b=/#(..)(..)(..)/,c=function(a){var c=a.match(b);return{r:parseInt(c[1],16),g:parseInt(c[2],16),b:parseInt(c[3],16)}};if(arguments.length==1)if(arguments[0]instanceof Array){var d=arguments[0];this.bounds=[],this.list=[],this.components=[];for(var e=0;e<d.length;e++){var f=d[e];this.list.push(f.color),f.bound!==undefined&&(this.bounds.push(f.bound),this.components.push(c(f.color)))}}else{var g=arguments[0];this.list=a[g]}else{var h=arguments[0],d=[],i;if(arguments.length==2)i=a[arguments[1]];else{i=[];for(var e=1;e<arguments.length;e++)i.push(arguments[e])}for(var e=0;e<i.length;e++)d.push(c(i[e]));this.list=[];var j=(d.length-1)/(h-1),k=0,l=d[k],m=d[k+1];for(var e=0;e<h;e++){var n=e*j,o=function(a){return Math.round(l[a]+(m[a]-l[a])*(n-k))};n>=k+1&&(k++,l=d[k],k<d.length-1&&(m=d[k+1])),this.list.push("rgb("+o("r")+","+o("g")+","+o("b")+")")}}};return b.prototype={reset:function(){this.current=0},next:function(){var a=this.list[this.current%this.list.length];return this.current++,a},findWithMinMax:function(a,b,c){return c>b?this.list[this.list.length-1]:this.list[Math.round((this.list.length-1)*(c-a)/(b-a))]},findIndexWithBounds:function(a){if(a>=this.bounds[this.bounds.length-1])return this.bounds.length-1;var b=0,c=this.bounds.length-1;while(c-b>1){var d=Math.round((b+c)/2);this.bounds[d]<=a?b=d:c=d}return b},findWithBounds:function(a){return this.list[this.findIndexWithBounds(a)]},findWithBoundsInterpolation:function(a){var b=this.findIndexWithBounds(a);if(b>=this.bounds.length-1)return this.list[b];var c=(a-this.bounds[b])/(this.bounds[b+1]-this.bounds[b]),d=this.components[b],e=this.components[b+1],f=this.components[b].r,g=this.components[b].g,h=this.components[b].b,i=this.components[b+1].r,j=this.components[b+1].g,k=this.components[b+1].b;return"rgb("+parseInt(f+c*(i-f))+","+parseInt(g+c*(j-g))+","+parseInt(h+c*(k-h))+")"}},b}(),Javlot.Legend=Class.create({legendGroupMargin:5,entryMargin:5,entryRectangleSize:{w:13,h:8},entryRectangleMargins:3,initialize:function(a,b,c,d,e){this.renderer=a,this.legendActive=b,this.mouseEnterCallback=c,this.mouseLeaveCallback=d,this.mouseClickCallback=e,this.legendGroup=(new Svgvml.Shapes.Group(a)).setAttribute("id","legend"),this.legendGroup.append(a),this.ids=$H()},reset:function(){this.legendGroup.empty(),this.ids=$H(),this.locked=null},setSize:function(a,b){this.rect.setSize(a,b),this.width=a,this.height=b},draw:function(a){var b=this.renderer;this.rect=(new Svgvml.Shapes.Rectangle(b)).setAttribute("id","border").setSize(1,1),this.rect.append(this.legendGroup);var c=0;a.each(function(a){a.rect=new Svgvml.Shapes.Rectangle(b),a.text=new Svgvml.Shapes.Text(b),a.text.setText(a.legend);var d=new Svgvml.Shapes.Group(b);a.rect.append(d),a.text.append(d),d.append(this.legendGroup),a.rect.setAttribute("fill",a.color).addClassName("entryRectangle"),a.text.addClassName("entryText"),this.legendActive&&(d.observe("mouseenter",this.mouseEnter.bind(this,a.identifier)),d.observe("mouseleave",this.mouseLeave.bind(this,a.identifier)),d.observe("click",this.mouseClick.bind(this,a.identifier))),a.text.alignmentCorrection(),this.ids.set(a.identifier,d),c=Math.max(a.text.getBBox().height,c)}.bind(this));var d=this.legendGroupMargin;a.each(function(a){a.rect.setSize(this.entryRectangleSize.w,this.entryRectangleSize.h).translate(this.legendGroupMargin,d),a.text.translate(this.legendGroupMargin+this.entryRectangleSize.w+this.entryRectangleMargins,d+(Prototype.Browser.WebKit?-3:1)),d+=c+this.entryMargin}.bind(this));var e=this.legendGroup.getBBox(),f=e.width+this.legendGroupMargin,c=d+this.legendGroupMargin;this.setSize(f,c)},place:function(a,b){this.legendGroup.applyTransform(Svgvml.Matrix2D.translate(a,b))},show:function(){this.legendGroup.show()},hide:function(){this.legendGroup.hide()},updateHighlight:function(a){this.ids.each(function(b){a==null||b.key==a?b.value.removeClassName("unhighlighted"):b.value.addClassName("unhighlighted")})},highlight:function(a){this.locked||this.updateHighlight(a)},unhighlight:function(a){this.locked||this.updateHighlight(null)},mouseEnter:function(a){this.locked||(this.highlight(a),this.mouseEnterCallback&&this.mouseEnterCallback(a))},mouseLeave:function(a){this.locked||(this.unhighlight(a),this.mouseLeaveCallback&&this.mouseLeaveCallback(a))},mouseClick:function(a){!this.locked||this.locked!=a?this.locked=a:this.locked=null,this.updateHighlight(this.locked),this.mouseClickCallback&&this.mouseClickCallback(this.locked)}}),Javlot.Utils={degToRad:function(a){return a/180*Math.PI},radToDeg:function(a){return a/Math.PI*180},removeNode:function(a){a.parentNode.removeChild(a)}},Javlot.Serie={Serie:Class.create({initialize:function(a,b,c,d){this.identifier=a,this.setData(b),this.legend=c,this.color=d,this.cache={}},setData:function(a){this.data=a.map(Object.clone)},bounds:function(){return this.cache.bounds||(this.cache.bounds=this.data.inject({minX:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minZ:Number.POSITIVE_INFINITY,maxZ:Number.NEGATIVE_INFINITY},function(a,b){var c={minX:Math.min(a.minX,b.x),maxX:Math.max(a.maxX,b.x),minY:Math.min(a.minY,b.y),maxY:Math.max(a.maxY,b.y)};return b.z!==undefined&&Object.extend(c,{minZ:Math.min(a.minZ,b.z),maxZ:Math.max(a.maxZ,b.z)}),c})),this.cache.bounds},dataDigest:function(){return this.data.inject(0,function(a,b){return a+b.y})}})},Javlot.Ticks={Tick:Class.create({initialize:function(a,b,c){this.label=b,this.angle=c,this.element=(new Svgvml.Shapes.Text(a.renderer)).addClassName("tick"),this.cache={}},getSize:function(){if(!this.cache.size){var a=this.element.getBBox(),b=Javlot.Utils.degToRad(this.angle),c=Math.cos(b),d=Math.sin(b);this.cache.size={w:a.height*d+a.width*c,h:a.width*d+a.height*c}}return this.cache.size},draw:function(a,b,c){this.setLabel(this.label,b);var d=this.element.getBBox();this.element.translate(-d.width,0),this.element.rotateAt(d.x+d.width,d.y/2,Javlot.Utils.degToRad(this.angle))},setLabel:function(a,b){this.element.setText(b?b(a):a)},setTextAnchor:function(a){this.element.setTextAnchor(a)}}),Ticks:Class.create({initialize:function(a,b){this.ticks=[],this.group=(new Svgvml.Shapes.Group(a.renderer)).setAttribute("id",b),this.group.append(a.renderer)},reset:function(){this.group.empty(),this.ticks=[]},addTick:function(a){a.element.append(this.group),this.ticks.push(a)}})},Javlot.Plot=function(){var a=Class.create({margin:10,initialize:function(a,b){this.position=Object.extend({x:"left",y:"top"},b),this.text=(new Svgvml.Shapes.Text(a.renderer)).setAttribute("id","title"),this.text.append(a.renderer),this.position.y=="bottom"&&this.text.alignmentCorrection()},setTitle:function(a){this.title=a},draw:function(){this.text.setText(this.title)},calculateSpace:function(a){var b=this.text.getBBox().height;this.position.y=="bottom"?a.drawYMax-=b+this.margin:a.drawYMin+=b+this.margin},place:function(a){var b=this.text.getBBox(),c=this.position.x=="left"?0:this.position.x=="center"?(a.width-b.width)/2:a.width-b.width,d=this.position.y=="top"?b.height:a.height-b.height;this.text.applyTransform(Svgvml.Matrix2D.translate(c,d))},reset:function(){this.setTitle(""),this.draw()}}),b=Class.create({initialize:function(a){this.text=(new Svgvml.Shapes.Text(a.renderer)).setAttribute("id","placeholder"),this.text.append(a.renderer)},setText:function(a){this.placeholder=a},draw:function(){this.text.setText(this.placeholder)},place:function(a){var b=this.text.getBBox();this.text.applyTransform(Svgvml.Matrix2D.translate((a.width-b.width)/2,a.height/2))},show:function(){this.text.show()},hide:function(){this.text.hide()}}),c=Class.create({initialize:function(a,b,c,d,e){this.plot=a,this.element=b,this.identifier=c,this.data=d,this.color=e,b.observe("mouseenter",this.mouseEnter.bind(this)),b.observe("mouseleave",this.mouseLeave.bind(this))},showValues:function(){},removeValues:function(){},mouseEnter:function(){this.showValues(),this.highlight(),this.plot.legend&&this.plot.legend.highlight(this.identifier,this.data,this.color)},mouseLeave:function(){this.removeValues(),(!this.plot.legend||!this.plot.legend.locked)&&this.inactivate(),this.plot.legend&&this.plot.legend.unhighlight(this.identifier)},highlight:function(){Prototype.Browser.IE||this.element.moveToFront(),this.element.veil&&(this.element.veil.hide(),this.element.veil.moveToFront()),this.element.addClassName("dataPointHighlighted"),this.element.removeClassName("dataPointUnhighlighted")},unhighlight:function(){this.element.veil&&this.element.veil.show(),this.element.removeClassName("dataPointHighlighted"),this.element.addClassName("dataPointUnhighlighted")},inactivate:function(){this.element.veil&&this.element.veil.hide(),this.element.removeClassName("dataPointHighlighted"),this.element.removeClassName("dataPointUnhighlighted")}}),d=Class.create({initialize:function(a,b,c,d){this.curvesGroupMargin=10,this.width=b,this.height=c,this.options=Object.extend({legend:!0,legendActive:!0,borderWidth:1,placeholder:"no data",palette:"brown"},d),this.borderWidth=this.options.borderWidth,this.renderer=Svgvml.create({container:a,width:b,height:c,id:"javlot"}),this.curvesGroup=(new Svgvml.Shapes.Group(this.renderer)).setAttribute("id","curves"),this.curvesGroup.append(this.renderer),this.reset()},getSvgNode:function(){return this.renderer.getSvgNode()},remove:function(){this.renderer.remove()},show:function(){this.renderer.show()},hide:function(){this.renderer.hide()},reset:function(){this.colors?this.colors.reset():this.colors=typeof this.options.palette=="object"?this.options.palette:new Javlot.Palette(this.options.palette),this.series=[],this.drawXMin=this.curvesGroupMargin,this.drawXMax=this.width-this.curvesGroupMargin,this.drawYMin=this.curvesGroupMargin,this.drawYMax=this.height-this.curvesGroupMargin,this.cache={},this.dataPoints=[],this.border&&(this.border.remove(),this.border=null),this.legend&&this.legend.reset(),this.title&&this.title.reset(),this.curvesGroup.empty(),this.curvesGroup.applyTransform(new Svgvml.Matrix2D)},findSerie:function(a){return this.series.find(function(b){return b.identifier==a})},dataDigest:function(){var a={};return this.series.each(function(b){a[b.identifier]=b.dataDigest()}),a},bounds:function(){if(!this.cache.bounds||this.cache.bounds.minX===undefined||this.cache.bounds.maxX===undefined||this.cache.bounds.minY===undefined||this.cache.bounds.maxY===undefined||this.cache.bounds.minZ===undefined||this.cache.bounds.maxZ===undefined){var a=this.series.invoke("bounds"),b=a.inject({minX:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minZ:Number.POSITIVE_INFINITY,maxZ:Number.NEGATIVE_INFINITY},function(a,b){return{minX:Math.min(a.minX,b.minX),maxX:Math.max(a.maxX,b.maxX),minY:Math.min(a.minY,b.minY),maxY:Math.max(a.maxY,b.maxY),minZ:Math.min(a.minZ,b.minZ),maxZ:Math.max(a.maxZ,b.maxZ)}});this.cache.bounds?Object.keys(b).each(function(a){this.cache.bounds[a]===undefined&&(this.cache.bounds[a]=b[a])}.bind(this)):this.cache.bounds=b}return this.cache.bounds},setBorderWidth:function(a){this.borderWidth=a},setTitle:function(b,c){this.title||(this.title=new a(this,c)),this.title.setTitle(b)},setTicksFormatters:function(a){Object.extend(this,a)},addEvent:function(a,b){Event.observe(this.renderer.surface.node,a,b)},removeEvent:function(a,b){Event.stopObserving(this.renderer.surface.node,a,b)},dataPointsHighlight:function(a){this.dataPoints.each(function(b){a?b.identifier==a?b.highlight():b.unhighlight():b.inactivate()})},drawTitle:function(){this.title&&this.title.draw()},placeTitle:function(){this.title&&this.title.place(this)},drawLegend:function(){this.legend||(this.options.legendActive?this.legend=new Javlot.Legend(this.renderer,!0,this.dataPointsHighlight.bind(this),this.dataPointsHighlight.bind(this,null),this.dataPointsHighlight.bind(this)):this.legend=new Javlot.Legend(this.renderer,!1))},placeLegend:function(){this.legend.place(this.width-1-this.legend.width,(this.height-this.legend.height)/2)},drawPlaceholder:function(){this.placeholder||(this.placeholder=new b(this),this.placeholder.setText(this.options.placeholder),this.placeholder.draw())},placePlaceholder:function(){this.placeholder&&this.placeholder.place(this)},drawBorder:function(){this.borderWidth!=0&&(this.border=(new Svgvml.Shapes.Rectangle(this.renderer)).setAttribute("id","border"),this.border.setPosition(this.drawXMin-this.borderWidth/2,this.drawYMin-this.borderWidth/2),this.border.setSize(this.drawXMax-this.drawXMin+this.borderWidth,this.drawYMax-this.drawYMin+this.borderWidth),this.border.setAttribute("stroke-width",this.borderWidth),this.border.append(this.renderer))},drawCurves:function(){this.series.invoke("draw",this)},placeCurves:function(){this.curvesGroup.translate(this.drawXMin,this.drawYMin)},calculateSpace:function(){this.title&&this.title.calculateSpace(this),this.legend&&(this.drawXMax-=this.legend.width),this.drawXMin+=this.borderWidth,this.drawXMax-=this.borderWidth,this.drawYMin+=this.borderWidth,this.drawYMax-=this.borderWidth},orderLayers:function(){this.renderer.moveToFront(this.curvesGroup),this.legend&&this.renderer.moveToFront(this.legend.legendGroup)},draw:function(){this.drawTitle(),this.series.length==0?this.options.placeholder&&(this.drawPlaceholder(),this.placeholder.show()):(this.placeholder&&this.placeholder.hide(),this.drawTicks(),this.options.legend&&this.drawLegend()),this.calculateSpace(),this.series.length!=0&&this.drawGrid(),this.placeTitle(),this.series.length==0?this.options.placeholder&&this.placePlaceholder():(this.placeTicks(),this.options.legend&&this.placeLegend(),this.placeCurves(),this.drawBorder(),this.drawCurves()),this.orderLayers()}});return{Plot:d,DataPoint:c}}(),Javlot.Serie.SeriePie=Class.create(Javlot.Serie.Serie,{initialize:function($super,a,b,c,d){$super(a,b,c),this.precomputings(d,!0)},precomputings:function(a,b){b&&this.data.sort(function(a,b){return b.y-a.y}),this.cache.sum=this.data.inject(0,function(a,b){return a+b.y});var c=a;this.data.each(function(a){a.y==this.cache.sum&&(this.data.singleSlice=a),a.startAngle=c,c=c+a.y/this.cache.sum*2*Math.PI,a.endAngle=c}.bind(this))},draw:function(a){function b(b,c,d,e,f){b.addClassName(f).setAttributes(e),b.setAttribute("fill",c),b.append(a.curvesGroup)}var c=a.bounds(),d=(a.drawXMax-a.drawXMin)/2,e=(a.drawYMax-a.drawYMin)/2;if(this.data.singleSlice){var f=this.data.singleSlice;f.pieSlice=new Svgvml.Shapes.Circle(a.renderer),f.pieSlice.setPosition(d,e).setRadius(a.r),b(f.pieSlice,f.color,this.data,{id:f.x,fill:f.color},"pieSlice")}else this.data.each(function(c){var f=a.r*Math.cos(c.startAngle),g=a.r*Math.sin(c.startAngle),h=c.endAngle-c.startAngle>Math.PI?1:0,i=1;if(c.startAngle!=c.endAngle)var j=d+a.r*Math.cos(c.endAngle),k=e+a.r*Math.sin(c.endAngle);var l=function(b){b.M(d,e),b.l(f,g),j!==undefined&&b.A(a.r,a.r,0,h,i,j,k),b.z()};c.pieSlice?(c.pieSlice.reset(),c.pieSlice.veil.reset()):(c.pieSlice=new Svgvml.Shapes.Path(a.renderer),b(c.pieSlice,c.color,this.identifier,{id:c.x},"pieSlice"),c.pieSlice.veil=new Svgvml.Shapes.Path(a.renderer),b(c.pieSlice.veil,"white",this.identifier,Prototype.Browser.IE?{stroke:"grey"}:{},"veil"),c.pieSlice.veil.hide()),l(c.pieSlice),l(c.pieSlice.veil),a.dataPoints.push(new Javlot.Plot.DataPoint(a,c.pieSlice,c.x,c,c.color))}.bind(this))},redraw:function(a){this.precomputings(a.startAngle,!1),this.draw(a)}}),Javlot.Plot.Pie=function(){var a=Class.create(Javlot.Ticks.Ticks,{initialize:function($super,a){$super(a,"pieTicks"),this.tickRadialMargin=10},draw:function(a,b){var c=a.series[0],b=a.yTicksFormatter;c.data.each(function(c){if(c.endAngle-c.startAngle>a.threshold){var d=new Javlot.Ticks.Tick(a,c.y,0);d.slice=c,this.addTick(d);var e=(c.startAngle+c.endAngle)/2;d.draw(a,b,"start")}}.bind(this))},computeRmax:function(a,b){var c=a;return this.ticks.each(function(b){var d=(b.slice.startAngle+b.slice.endAngle)/2,e=b.getSize();c=Math.min(c,(a-e.w)/Math.abs(Math.cos(d))-this.tickRadialMargin),c=Math.min(c,(a-e.h)/Math.abs(Math.sin(d))-this.tickRadialMargin)}.bind(this)),c},calculateSpace:function(a){var b=Math.min(a.drawXMax-a.drawXMin,a.drawYMax-a.drawYMin)/2;a.r||(a.r=this.computeRmax(b,a.startAngle)),a.drawXMin+=b-a.r,a.drawXMax-=b-a.r,a.drawYMin+=b-a.r,a.drawYMax-=b-a.r},place:function(a){var b={x:(a.drawXMin+a.drawXMax)/2,y:(a.drawYMin+a.drawYMax)/2};this.ticks.each(function(c){var d=(c.slice.startAngle+c.slice.endAngle)/2;c.setTextAnchor(-Math.PI/2<d&&d<Math.PI/2?"start":"end");var e=b.x+(a.r+this.tickRadialMargin)*Math.cos(d),f=b.y+(a.r+this.tickRadialMargin)*Math.sin(d);c.element.applyTransform(Svgvml.Matrix2D.translate(e,f))}.bind(this))}}),b=Class.create(Javlot.Plot.Plot,{initialize:function($super,a,b,c,d){$super(a,b,c,d),this.borderWidth=0,this.startAngle=-Math.PI,this.threshold=0,this.options.r&&(this.r=this.options.r),this.serieClass=Javlot.Serie.SeriePie},addSerie:function(a,b,c){this.series=[new this.serieClass(a,b.map(function(a,b){return Object.extend(a,{order:b})}),c,this.startAngle)]},setThreshold:function(a){this.threshold=a*Math.PI/180},drawGrid:function(){},drawLegend:function($super){$super();var a=this,b=this.series[0].data.sortBy(function(a){return a.order}).inject([],function(b,c){return c.color=a.colors.next(),b.push({legend:c.x,color:c.color,identifier:c.x}),b});this.legend.draw(b)},drawTicks:function(){this.ticks||(this.ticks=new a(this)),this.ticks.draw(this)},reset:function($super){$super(),this.ticks&&this.ticks.reset()},placeTicks:function(){this.ticks.place(this)},calculateSpace:function($super){$super(),this.ticks&&this.ticks.calculateSpace(this)}});return b}(),Object.extend(Javlot.Ticks,function(){var a=Class.create(Javlot.Ticks.Tick,{draw:function($super,a,b){var c=this.angle==0?"middle":this.angle>0?"end":"start";return $super(a,b,c)}}),b=Class.create(Javlot.Ticks.Tick,{draw:function($super,a,b){return $super(a,b,"end",this.angle)}}),c=Class.create(Javlot.Ticks.Ticks,{createTick:function(a,b,c,d,e){var f=new b(a,c,d);return this.addTick(f),f.draw(a,e),f},addValueTick:function(a,b,c,d){var e=this.createTick(a,b);this.place(a,[e]);var f=e.element.getBounds();return this.ticks.each(function(a){if(a!=e){var b=a.element.getBounds();(f[c]<=b[c]&&f[c]+f[d]>=b[c]-2||b[c]<=f[c]&&b[c]+b[d]>=f[c]-2)&&a.element.setAttribute("fill-opacity",.3)}}),e},removeValueTick:function(a){this.ticks=this.ticks.reject(function(b){return b==a}),a.element.remove(),this.ticks.each(function(a){a.element.removeAttribute("fill-opacity")})},draw:function(a,b,c,d,e,f,g){this.sizeMax={w:0,h:0};var h=(c-b)/(d-1);for(var i=0,j=b;i<d;i+=1){var k=this.createTick(a,j,g),l=k.getSize();this.sizeMax={w:Math.max(this.sizeMax.w,l.w),h:Math.max(this.sizeMax.h,l.h)},j+=h}}}),d=Class.create(c,{initialize:function($super,a){$super(a,"xTicks")},createTick:function($super,b,c){return $super(b,a,c,b.xTicksAngle,b.xTicksFormatter)},addValueTick:function($super,a,b){return $super(a,b,"x","width")},draw:function($super,b){var c=b.bounds();$super(b,c.minX,c.maxX,b.xTicksNumber,a,b.xTicksAngle,b.xTicksFormatter)},calculateSpace:function(a){a.drawYMax-=this.sizeMax.h},place:function(a,b){var c=a.bounds(),d=(a.drawXMax-a.drawXMin)/(c.maxX==c.minX?1:c.maxX-c.minX),e=a.drawXMin,f=a.drawYMax+a.curvesGroupMargin;(b||this.ticks).each(function(a){var b=new Svgvml.Matrix2D;b.translate(e+(a.label-c.minX)*d,f),a.element.preTransform(b)})}}),e=Class.create(c,{initialize:function($super,a){$super(a,"yTicks")},createTick:function($super,a,c){return $super(a,b,c,a.yTicksAngle,a.yTicksFormatter)},addValueTick:function($super,a,b){return $super
(a,b,"y","height")},draw:function($super,a){var c=a.bounds();$super(a,c.minY,c.maxY,a.yTicksNumber,b,a.yTicksAngle,a.yTicksFormatter)},calculateSpace:function(a){a.drawXMin+=this.sizeMax.w},place:function(a,b){var c=a.bounds();stepPixels=(a.drawYMax-a.drawYMin)/(c.maxY==c.minY?1:c.maxY-c.minY);var d=this.sizeMax.w,e=a.drawYMin;(b||this.ticks).each(function(a){var b=new Svgvml.Matrix2D;b.translate(d,e+(c.maxY-a.label)*stepPixels),a.element.preTransform(b)})}});return{XTick:a,YTick:b,XYTicks:c,XTicks:d,YTicks:e}}()),Javlot.Grid={Grid:Class.create({initialize:function(a){this.gridGroup=(new Svgvml.Shapes.Group(a.renderer)).setAttribute("id","grid"),this.gridGroup.append(a.renderer)},reset:function(){this.gridGroup.empty()},drawXGrid:function(a){var b=(a.drawXMax-a.drawXMin)/(a.xTicksNumber-1);for(var c=1,d=a.drawXMin+b;c<a.xTicksNumber-1;c+=1){var e=(new Svgvml.Shapes.Line(a.renderer)).setPoints(d,a.drawYMin,d,a.drawYMax).addClassName("line");e.append(this.gridGroup),d+=b}},drawYGrid:function(a){stepPixels=(a.drawYMax-a.drawYMin)/(a.yTicksNumber-1);for(var b=1,c=a.drawYMax-stepPixels;b<a.yTicksNumber-1;b+=1){var d=(new Svgvml.Shapes.Line(a.renderer)).setPoints(a.drawXMin,c,a.drawXMax,c).addClassName("line");d.append(this.gridGroup),c-=stepPixels}},draw:function(a,b,c){var d=(new Svgvml.Shapes.Rectangle(a.renderer,{id:"background",stroke:"none"})).setPosition(a.drawXMin,a.drawYMin).setSize(a.drawXMax-a.drawXMin,a.drawYMax-a.drawYMin);d.append(this.gridGroup),(b===undefined||b)&&this.drawXGrid(a),(c===undefined||c)&&this.drawYGrid(a)}})},Javlot.Plot.PlotXY=function(){var a=Class.create(Javlot.Serie.Serie,{draw:function(a){var b=a.bounds(),c=(new Svgvml.Shapes.Polyline(a.renderer)).setAttribute("id",this.identifier).addClassName("curveXY").setAttribute("stroke",this.color);c.append(a.curvesGroup);var d=(a.drawXMax-a.drawXMin)/(b.maxX-b.minX),e=(a.drawYMax-a.drawYMin)/(b.maxY-b.minY),f=[];for(var g=0;g<this.data.length;g++)x=(this.data[g].x-b.minX)*d,y=(b.maxY-this.data[g].y)*e,f.push([x,y]);c.addPoints(f)}}),b=Class.create(Javlot.Plot.Plot,{initialize:function($super,b,c,d,e){$super(b,c,d,e),this.serieClass=a,this.xTicksNumber=5,this.yTicksNumber=5,this.xTicksAngle=70,this.yTicksAngle=0},reset:function($super){$super(),this.grid&&this.grid.reset(),this.xTicks&&this.xTicks.reset(),this.yTicks&&this.yTicks.reset()},addSerie:function(a,b,c,d){var d=d||this.colors.next();this.series.push(new this.serieClass(a,b,c,d))},setBoundsX:function(a){this.cache.bounds=this.cache.bounds||{},a.min!==undefined&&(this.cache.bounds.minX=a.min),a.max!==undefined&&(this.cache.bounds.maxX=a.max)},setBoundsY:function(a){this.cache.bounds=this.cache.bounds||{},a.min!==undefined&&(this.cache.bounds.minY=a.min),a.max!==undefined&&(this.cache.bounds.maxY=a.max)},setTicksNumber:function(a,b){this.xTicksNumber=a,this.yTicksNumber=b},setTicksAngles:function(a,b){this.xTicksAngle=Javlot.Utils.degToRad(a),this.yTicksAngle=Javlot.Utils.degToRad(b)},drawLegend:function($super){$super(),this.legend.draw(this.series)},calculateSpace:function($super){$super(),this.xTicks&&this.xTicks.calculateSpace(this),this.yTicks&&this.yTicks.calculateSpace(this)},drawTicks:function(){this.xTicks||(this.xTicks=new Javlot.Ticks.XTicks(this)),this.yTicks||(this.yTicks=new Javlot.Ticks.YTicks(this)),this.xTicks.draw(this),this.yTicks.draw(this)},placeTicks:function($super){this.xTicks.place(this),this.yTicks.place(this)},drawGrid:function(){this.grid||(this.grid=new Javlot.Grid.Grid(this)),this.grid.draw(this)}});return b}(),Javlot.Serie.SerieBar=Class.create(Javlot.Serie.Serie,{draw:function(a,b,c){var d=a.bounds(),e=(a.drawYMax-a.drawYMin)/(d.maxY==d.minY?1:d.maxY-d.minY);for(var f=0;f<this.data.length;f++)this.drawBar(a,d,e,this.data[f],f,b,c)},drawBar:function(a,b,c,d,e,f,g){var h=Math.round((d.y-b.minY)*c),i=this.shapePosition(a,e,f,g,h),j=this.shape(a,i.x,i.y,a.widthBar,h,{fill:this.color,stroke:"none"},"bar");return j.groupPos=f,j.veil=this.shape(a,i.x,i.y,a.widthBar,h,Prototype.Browser.IE?{fill:"white",stroke:"none",opacity:.7}:{},"veil"),j.veil.hide(),a.dataPoints.push(new Javlot.Plot.Bar.DataPoint(a,j,this.identifier,d,this.color)),d.bar=j,h},shapePosition:function(a,b,c,d,e){return{x:a.widthGroup*b+(a.widthBar+a.marginBar)*c,y:a.drawYMax-a.drawYMin-e}},shape:function(a,b,c,d,e,f,g){var h=(new Svgvml.Shapes.Rectangle(a.renderer,f)).addClassName(g);return h.append(a.curvesGroup),h.translate(b,c),h.setSize(d,e),h}}),Javlot.Plot.Bar=function(){var a=Class.create(Javlot.Ticks.XTicks,{draw:function(a){var b=a.bounds();this.sizeMax={w:0,h:0};for(var c=0;c<a.xTicksNumber;c+=1){var d=new Javlot.Ticks.XTick(a,a.series[0].data[c].x,a.xTicksAngle);this.addTick(d),d.draw(a);var e=d.getSize();this.sizeMax={w:Math.max(this.sizeMax.w,e.w),h:Math.max(this.sizeMax.h,e.h)}}},place:function(a){var b=a.bounds(),c=a.drawXMin+(a.widthGroup-a.marginGroup)/2,d=a.drawYMax+a.curvesGroupMargin;for(var e=0;e<this.ticks.length;e++)this.ticks[e].element.preTransform((new Svgvml.Matrix2D).translate(c+e*a.widthGroup,d))}}),b=Class.create(Javlot.Plot.PlotXY,{initialize:function($super,a,b,c,d){$super(a,b,c,d),this.marginBar=2,this.marginGroup=10,this.serieClass=Javlot.Serie.SerieBar,this.setBoundsY(0)},drawTicks:function(){this.xTicksNumber=Math.max.apply(null,this.series.map(function(a){return a.data.length})),this.xTicks=new a(this),this.xTicks.draw(this),this.yTicks=new Javlot.Ticks.YTicks(this),this.yTicks.draw(this)},placeTicks:function(){this.xTicks.place(this),this.yTicks.place(this)},calculateSpaceWidths:function(){this.widthBar=(this.drawXMax-this.drawXMin-(this.series.length-1)*this.xTicksNumber*this.marginBar-(this.xTicksNumber-1)*this.marginGroup)/(this.series.length*this.xTicksNumber),this.widthGroup=(this.widthBar+this.marginBar)*this.series.length-this.marginBar+this.marginGroup},calculateSpace:function($super){$super(),this.calculateSpaceWidths()},drawCurves:function(){this.series.each(function(a,b){a.draw(this,b)}.bind(this))},drawGrid:function($super){this.grid||(this.grid=new Javlot.Grid.Grid(this)),this.grid.draw(this,!1,!0)}});return b.DataPoint=Class.create(Javlot.Plot.DataPoint,{showValues:function(){this.yTick=this.plot.yTicks.addValueTick(this.plot,this.data.y)},removeValues:function(){this.plot.yTicks.removeValueTick(this.yTick)}}),b}(),Javlot.Serie.SerieStackedBar=Class.create(Javlot.Serie.SerieBar,{shapePosition:function(a,b,c,d,e){return{x:a.widthGroup*b+(a.widthBar+a.marginBar)*c,y:a.drawYMax-a.drawYMin-d-e}}}),Javlot.Plot.StackedBar=Class.create(Javlot.Plot.Bar,{initialize:function($super,a,b,c,d){$super(a,b,c,d),this.serieClass=Javlot.Serie.SerieStackedBar},drawCurves:function(){var a=this.bounds(),b=(this.drawYMax-this.drawYMin)/(a.maxY==a.minY?1:a.maxY-a.minY);this.injectByStack(null,function(c,d,e){var f=d.drawBar(this,a,b,d.data[e],e,0,c);return c+f})},calculateSpaceWidths:function(){this.widthBar=(this.drawXMax-this.drawXMin-(this.xTicksNumber-1)*this.marginGroup)/this.xTicksNumber,this.widthGroup=this.widthBar+this.marginGroup},injectByStack:function(a,b){var c=this.series[0].data.length,d=[];for(var e=0;e<c;e++)d.push(this.series.inject(a,function(a,c){return b.bind(this)(a,c,e)},this));return d},bounds:function(){if(!this.cache.bounds||this.cache.bounds.minY===undefined||this.cache.bounds.maxY===undefined){var a=this.injectByStack(0,function(a,b,c){return a+b.data[c].y});if(!this.cache.bounds||this.cache.bounds.minY===undefined)this.cache.bounds.minY=Math.min.apply(null,a);this.cache.bounds.maxY===undefined&&(this.cache.bounds.maxY=Math.max.apply(null,a))}return this.cache.bounds}}),Javlot.Serie.SerieDisk=Class.create(Javlot.Serie.Serie,{draw:function(a){var b=function(b,c,d,e,f,g){var h=(new Svgvml.Shapes.Circle(a.renderer,f)).setAttribute("id",e).addClassName(g);return h.setPosition(b,c).setRadius(d),h.append(a.curvesGroup),h},c=a.bounds(),d=(a.drawXMax-a.drawXMin)/(c.maxX==c.minX?1:c.maxX-c.minX),e=(a.drawYMax-a.drawYMin)/(c.maxY==c.minY?1:c.maxY-c.minY);for(var f=0;f<this.data.length;f++){var g=(this.data[f].x-c.minX)*d,h=(c.maxY-this.data[f].y)*e,i=b(g,h,this.data[f].z,this.data[f].identifier,{fill:this.color,stroke:"none"},"disk");i.veil=b(g,h,this.data[f].z,this.data[f].identifier,Prototype.Browser.IE?{fill:"white",stroke:"white"}:{},"veil"),i.veil.hide(),a.dataPoints.push(new Javlot.Plot.Disk.DataPoint(a,i,this.identifier,this.data[f],this.color)),this.data[f].disk=i}},dataDigest:function(){return this.data.inject(0,function(a,b){return a+b.z})}}),Javlot.Plot.Disk=function(){var a=function(a,b,c,d,e,f){var g=new Svgvml.Shapes.Path(a);return g.M(c,d),g.A(e,e,0,0,1,c+2*e,d),g.append(b),g.addClassName(f),g},b=Class.create(Javlot.Legend,{draw:function($super,b){$super(b);var c=this.plot.bounds();this.semiCircleY=this.h+10+c.maxZ,c.minZ!=0&&a(this.plot.renderer,this.legendGroup,0,this.semiCircleY,c.minZ,"minSemicircle"),c.maxZ!=0&&a(this.plot.renderer,this.legendGroup,0,this.semiCircleY,c.maxZ,"maxSemicircle");var d=(new Svgvml.Shapes.Text(this.plot.renderer,this.plot.zTicksFormatter?this.plot.zTicksFormatter(c.minZ):c.minZ,{id:"minValue"})).setTextAnchor("middle");d.translate(0,this.semiCircleY+10).append(this.legendGroup);var e=(new Svgvml.Shapes.Text(this.plot.renderer,this.plot.zTicksFormatter?this.plot.zTicksFormatter(c.maxZ):c.maxZ,{id:"maxValue"})).setTextAnchor("middle");e.translate(2*c.maxZ,this.semiCircleY+10).append(this.legendGroup)},calculateSpace:function(){var a=this.legendGroup.getBBox(),b=a.width+this.legendGroupMargin;this.plot.drawXMax-=b},highlight:function($super,b,c,d){$super(b,c),c&&(this.highlightedSemicircle=a(this.plot.renderer,this.legendGroup,0,this.semiCircleY,c.z,"dataSemicircle"),this.highlightedSemicircle.moveToBack(),this.highlightedSemicircle.setAttributes({fill:d}))},unhighlight:function($super,a){$super(a),this.highlightedSemicircle&&(this.highlightedSemicircle.remove(),this.highlightedSemicircle=null)}}),c=Class.create(Javlot.Plot.PlotXY,{initialize:function($super,a,b,c,d){$super(a,b,c,d),this.serieClass=Javlot.Serie.SerieDisk},drawLegend:function($super){$super(),this.legend.draw(this.series)},calculateSpace:function($super){$super();var a=this.bounds(),b=0,c=0,d=0,e=0;this.series.each(function(f){b=Math.max(b,f.data.map(function(b){return b.x-b.z/2<a.minX?a.minX-b.x+b.z/2:0}).max()),d=Math.max(d,f.data.map(function(b){return b.y+b.z/2>a.maxY?b.y+b.z/2-a.maxY:0}).max()),c=Math.max(c,f.data.map(function(b){return b.y-b.z/2<a.minY?a.minY-b.y+b.z/2:0}).max()),e=Math.max(e,f.data.map(function(b){return b.x+b.z/2>a.maxX?b.x+b.z/2-a.maxX:0}).max())}.bind(this)),this.drawXMin+=b,this.drawYMax-=c,this.drawYMin+=d,this.drawXMax-=e}});return c.DataPoint=Class.create(Javlot.Plot.DataPoint,{showValues:function(){this.xTick=this.plot.xTicks.addValueTick(this.plot,this.data.x),this.yTick=this.plot.yTicks.addValueTick(this.plot,this.data.y),this.zValue=(new Svgvml.Shapes.Text(this.plot.renderer,this.plot.zTicksFormatter?this.plot.zTicksFormatter(this.data.z):this.data.z)).setTextAnchor("middle"),this.zValue.addClassName("zValue").translate(this.element.position.x,this.element.position.y-this.data.z-2).append(this.plot.curvesGroup)},removeValues:function(){this.plot.xTicks.removeValueTick(this.xTick),this.plot.yTicks.removeValueTick(this.yTick),this.zValue.remove()}}),c}(),Javlot.Motion={},Javlot.Motion.SerieExtension={addAnimationStep:function(a,b){this.animationSteps||(this.animationSteps=new Hash),this.animationSteps.set(a,b.map(Object.clone))},steps:function(){return this.cache.steps||(this.cache.steps=this.animationSteps.keys().map(Number).sort(function(a,b){return a-b})),this.cache.steps},bounds:function(){return this.cache.bounds||(this.cache.bounds=this.animationSteps.values().inject({minX:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minZ:Number.POSITIVE_INFINITY,maxZ:Number.NEGATIVE_INFINITY},function(a,b){var c=b.inject({minX:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minZ:Number.POSITIVE_INFINITY,maxZ:Number.NEGATIVE_INFINITY},function(a,b){var c={minX:Math.min(a.minX,b.x),maxX:Math.max(a.maxX,b.x),minY:Math.min(a.minY,b.y),maxY:Math.max(a.maxY,b.y)};return b.z!==undefined&&Object.extend(c,{minZ:Math.min(a.minZ,b.z),maxZ:Math.max(a.maxZ,b.z)}),c});return{minX:Math.min(a.minX,c.minX),maxX:Math.max(a.maxX,c.maxX),minY:Math.min(a.minY,c.minY),maxY:Math.max(a.maxY,c.maxY),minZ:Math.min(a.minZ,c.minZ),maxZ:Math.max(a.maxZ,c.maxZ)}})),this.cache.bounds}},Javlot.Motion.PlotExtension={reset:function($super){this.currentDate=null,$super()},addSerie:function($super,a,b,c,d){$super(a,b[0].data,c,d);var e=this.findSerie(a);for(var f=0,g=b.length;f<g;f++)e.addAnimationStep(b[f].date,b[f].data)},bounds:function(){if(!this.cache.bounds||this.cache.bounds.minX===undefined||this.cache.bounds.maxX===undefined||this.cache.bounds.minY===undefined||this.cache.bounds.maxY===undefined||this.cache.bounds.minZ===undefined||this.cache.bounds.maxZ===undefined){var a=this.series.invoke("bounds"),b=a.inject({minX:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minZ:Number.POSITIVE_INFINITY,maxZ:Number.NEGATIVE_INFINITY},function(a,b){return{minX:Math.min(a.minX,b.minX),maxX:Math.max(a.maxX,b.maxX),minY:Math.min(a.minY,b.minY),maxY:Math.max(a.maxY,b.maxY),minZ:Math.min(a.minZ,b.minZ),maxZ:Math.max(a.maxZ,b.maxZ)}});this.cache.bounds?Object.keys(b).each(function(a){this.cache.bounds[a]===undefined&&(this.cache.bounds[a]=b[a])}.bind(this)):this.cache.bounds=b}return this.cache.bounds},animateElements:function(a,b){for(var c=0;c<this.series.length;c++)this.series[c].animate(this,a,b)},animate:function(a){var b=0,c=this.series[0].steps(),d=c[0],e=c[c.length-1],f=d+(e-d)*a,g=c.length-1;for(var h=1;h<c.length;h++)if(c[h]>=f){g=h;break}var i=c[g-1],j=c[g],k=(f-i)/(j-i);this.animateElements(i,k),this.options.toolbar&&this.updatePlayerToolbar(Math.round(f))},drawTitle:function(){this.title&&this.title.draw(this.series.length!=0)},calculateSpace:function($super){this.options.toolbar&&this.series&&this.series.length!=0&&this.playerToolbar.calculateSpace(this),$super()},draw:function($super){this.options.toolbar&&this.series&&this.series.length!=0&&this.playerToolbar.draw(this),$super(),this.options.toolbar&&this.series&&this.series.length!=0&&(this.updatePlayerToolbar(this.series[0].steps()[0]),this.playerToolbar.place(this))},updatePlayerToolbar:function(a){this.currentDate!=a&&(this.currentDate=a,this.playerToolbar.setDate(a),this.infoFormatter&&this.playerToolbar.setInfo(this.infoFormatter(this.dataDigest())))}},Object.extend(Javlot.Motion,function(){var a=Class.create({margin:Prototype.Browser.WebKit?0:8,initialize:function(a,b,c){this.group=(new Svgvml.Shapes.Group(a,{"class":"playerToolbar"})).append(a),this.play=(new Svgvml.Shapes.Image(a)).setImage(Javlot.constants.playImage,Javlot.constants.playImageSize.w,Javlot.constants.playImageSize.h),this.play.append(this.group),this.play.hide(),this.pause=(new Svgvml.Shapes.Image(a)).setImage(Javlot.constants.pauseImage,Javlot.constants.pauseImageSize.w,Javlot.constants.pauseImageSize.h),this.pause.append(this.group),this.pause.hide(),this.date=(new Svgvml.Shapes.Text(a)).setAttribute("id","date"),this.date.append(this.group),this.date.alignmentCorrection(),this.info=(new Svgvml.Shapes.Text(a)).setAttribute("id","info"),this.info.append(this.group),this.info.alignmentCorrection(),this.date.setText(""),this.setInfo(""),this.setPosition(),this.play.observe("click",b),this.pause.observe("click",c)},setDate:function(a){this.date.setText(a);var b=this.date.getBBox().width+5;this.info.applyTransform(new Svgvml.Matrix2D.translate(b,0))},setInfo:function(a){this.info.setText(a)},setPosition:function(a){this.position=a||"top"},draw:function(a){a.series&&a.series.length!=0?(a.series[0].animationSteps.values().length>1&&this.play.show(),this.date.show()):(this.play.hide(),this.date.hide())},calculateSpace:function(a){var b=Javlot.constants.playImageSize.h;this.position=="bottom"?(a.drawYMax-=b+this.margin,this.y=a.drawYMax):(this.y=a.drawYMin+this.margin,a.drawYMin+=b+this.margin)},place:function(a){this.group.applyTransform(Svgvml.Matrix2D.translate(0,this.y));var b=a.drawXMax-5-Javlot.constants.playImageSize.w,c=this.position=="top"?-5:0,d=Svgvml.Matrix2D.translate(b,c);this.play.applyTransform(d),this.pause.applyTransform(d)},reset:function(a){this.draw(a)},update:function(a){a?(this.play.hide(),this.pause.show()):(this.pause.hide(),this.play.show())}}),b=Class.create({initialize:function(b,c,d,e,f,g,h,i){this.options=Object.extend({maxFps:60,duration:3,toolbar:!0},i),this.maxFps=this.options.maxFps,this.duration=this.options.duration,this.elapsed=0,this.timer=null,d.addMethods(e),b.addMethods(c),this.plot=new b(f,g,h,this.options),this.plot.serieClass=d,this.options.toolbar&&(this.plot.playerToolbar=new a(this.plot.renderer,this.play.bind(this),this.pause.bind(this)))},reset:function(){this.pause(),this.plot.reset(),this.options.toolbar&&this.plot.playerToolbar.reset(this),this.elapsed=0},getSvgNode:function(){return this.plot.getSvgNode()},addEvent:function(a,b){this.plot.addEvent(a,b)},removeEvent:function(a,b){this.plot.removeEvent(a,b)},setMaxFps:function(a){this.maxFps=a},setDuration:function(a){this.duration=a},addSerie:function(a,b,c,d){this.plot.addSerie(a,b,c,d)},setBoundsX:function(a){this.plot.setBoundsX(a)},setBoundsY:function(a){this.plot.setBoundsY(a)},setTitle:function(a,b){this.plot.setTitle(a,b),this.options.toolbar&&b&&this.plot.playerToolbar.setPosition(b.y)},setTicksFormatters:function(a){this.plot.setTicksFormatters(a)},setInfoFormatter:function(a){this.plot.infoFormatter=a},show:function(){this.plot.show()},hide:function(){this.plot.hide()},animate:function(a,b,c,d){var e=1e3*a,f,g=function(){var a=(new Date).getTime();if(a>=f+e){clearInterval(this.timer),c(1),d&&d(),this.elapsed=0;return}this.elapsed=a-f;var b=this.elapsed/e;c(b)}.bind(this);this.timer=setInterval(g,1e3/b),f=(new Date).getTime()-this.elapsed},drawDate:function(a){var b=this.timedSeries.get(a);for(var c=0;c<b.length;c++){var d=b[c];this.plot.addSerie(d.identifier,d.data,d.identifier)}this.plot.draw()},draw:function(){this.plot.draw()},play:function(){if(this.plot.series[0].animationSteps.values().length<=1)return;var a;this.options.toolbar&&(this.plot.playerToolbar.update(!0),a=this.plot.playerToolbar.update.bind(this.plot.playerToolbar)),this.animate(this.duration,this.maxFps,this.plot.animate.bind(this.plot),a)},pause:function(){this.options.toolbar&&this.plot.playerToolbar.update(!1),this.timer&&(clearInterval(this.timer),this.timer=null)}});return{Motion:b}}()),Javlot.Motion.MotionBar=function(){var a=Class.create(Javlot.Serie.SerieBar,{animate:function(a,b,c){var d=function(a,b,c,d){a.setHeight(d),a.applyTransform(Svgvml.Matrix2D.translate(b,c))},e=a.bounds(),f=(a.drawYMax-a.drawYMin)/(e.maxY-e.minY),g=this.animationSteps.get(b),h=this.animationSteps.get(b+1);for(var i=0;i<this.data.length;i++){this.data[i].y=g[i].y+(h[i].y-g[i].y)*c;var j=Math.round((this.data[i].y-e.minY)*f),k=this.shapePosition(a,i,this.data[i].bar.groupPos,0,j);d(this.data[i].bar,k.x,k.y,j),d(this.data[i].bar.veil,k.x,k.y,j)}}}),b=Class.create(Javlot.Plot.Bar),c=Class.create(Javlot.Motion.Motion,{initialize:function($super,c,d,e,f){$super(b,Javlot.Motion.PlotExtension,a,Javlot.Motion.SerieExtension,c,d,e,f)}});return c}(),Async={},Async.Error=Class.create({initialize:function(a){this.msg=a}}),Async.DeferredCallback=Class.create({initialize:function(a,b,c){this.id=c,this.handleSuccess=a||function(a){return a},this.handleFailure=b||function(a){return window.console&&console.log("Default callback failure handler"),a}},toString:function(){return this.id?" "+this.id:""}}),Async.DeferredRequest=Class.create({initialize:function(a){this.id=a,this.fired=!1,this.paused=0,this.cancelled=!1,this.lastResult=null,this.callbacks=[]},addCallback:function(a){return this.callbacks.push(a),this.fired&&this.run(this.lastResult),this},chainDeferred:function(a){return a!=null&&this.addCallback(new Async.DeferredCallback(function(b){return window.console&&console.log("Chained deferred request"+a+" will be called from"+this),a.call(b),a}.bind(this)),function(b){return a.call(b),a}),this},addCallbacks:function(a){return a.each(this.addCallback.bind(this)),this},call:function(a){return this.fired?window.console&&console.log("Deferred request"+this+" already fired!"):this.cancelled?window.console&&console.log("Deferred request"+this+" has been cancelled!"):(window.console&&console.log("Deferred request"+this+" fired!",(new Date).getTime()),this.fired=!0,this.run(a)),this},cancel:function(){this.cancelled||(window.console&&console.log("Deferred request"+this+" cancelled!"),this.cancelled=!0,this.handleCancel&&this.handleCancel())},pause:function(){this.paused++,window.console&&console.log("Deferred request"+this+": pause")},unpause:function(){this.paused--,this.paused==0&&this.run(this.lastResult)},restart:function(a){this.lastResult=a,this.unpause()},run:function(a){var b;this.lastResult=a;if(this.paused==0)while(this.callbacks.length!=0){this.cancelled&&(this.handleCancel&&this.handleCancel(),this.lastResult=new Async.Error("Deferred request"+this+" cancelled"));var c=this.callbacks.shift();try{b=this.lastResult&&this.lastResult.constructor==Async.Error?c.handleFailure(this.lastResult):c.handleSuccess(this.lastResult)}catch(d){this.lastResult=d,window.console&&(console.error("Deferred request"+this+": callback"+c+" exception raised"),console.dir(d))}if(!b||b.constructor!=Async.DeferredRequest&&b.constructor!=Async.DeferredArray&&b.constructor!=Async.AjaxRequest)this.lastResult=b;else{this.pause();var e=function(a){return this.restart(a),null}.bind(this),c=new Async.DeferredCallback(e,e);b.addCallback(c);break}}},toString:function(){return this.id?" "+this.id:""}}),Async.AjaxRequest=Class.create(Async.DeferredRequest,{initialize:function($super,a,b,c){this.url=a,this.options=b,this.called=!1,$super(c||"ajax")},call:function($super){return this.called||(this.called=!0,new Ajax.Request(this.url,Object.extend(this.options,{onSuccess:$super,onFailure:function(a,b){return $super(new Async.Error(a.getStatus()+": "+a.getStatusText()))}}))),this}});var PleaseUpgrade={};PleaseUpgrade.constants={version:"0.4"},PleaseUpgrade.data={Browser:[{string:navigator.userAgent,subString:"Chrome",identity:"Chrome",latestVersion:9,download:"http://www.google.fr/chrome"},{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari",latestVersion:4,download:"http://www.apple.com/fr/safari/download/"},{prop:window.opera,versionSearch:"Version",identity:"Opera",latestVersion:10,download:"http://www.opera.com/browser/"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror",latestVersion:4.3},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox",latestVersion:4,download:"http://www.mozilla.com"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",versionSearch:"MSIE",identity:"Explorer",latestVersion:8,download:"http://www.microsoft.com/windows/internet-explorer/default.aspx"},{string:navigator.userAgent,subString:"Gecko",versionSearch:"rv",identity:"Mozilla",download:"http://www.mozilla.com"},{string:navigator.userAgent,subString:"Mozilla",versionSearch:"Mozilla",identity:"Netscape",download:"http://www.mozilla.com"}],OS:[{string:navigator.platform,subString:"Win",os:"Windows"},{string:navigator.platform,subString:"Mac",os:"Mac"},{string:navigator.userAgent,subString:"iPhone",os:"iPhone/iPod"},{string:navigator.platform,subString:"Linux",os:"Linux"}]},function(){var a=function(a,b){for(var c in b)a[c]=b[c];return a},b=function(a){var b=PleaseUpgrade.data[a];for(var c=0;c<b.length;c++){var d=b[c].string;if(d){if(d.indexOf(b[c].subString)!=-1)return b[c]}else if(b[c].prop)return b[c]}return{identity:"an unknown "+a.toLowerCase()}},c=function(a){var b,c=function(c){var d=c.indexOf(a);if(d==-1)return;var e=c.substring(d+a.length+1),f=/(\d+)(\..*)?/,g=e.match(f);g&&(e=g[1]+(g[2]!==undefined?"."+g[2].replace(/\./g,""):"")),b=parseFloat(e)};return c(navigator.userAgent),b||c(navigator.appVersion),b?b:"an unknown version"},d=function(){a(this,b("Browser")),this.version=c(this.versionSearch||this.identity),a(this,b("OS"))},e,f=function(a,b){e||(e=new d);var c=!1,f=!1,g=!1;if(b)for(var h=0;h<b.length;++h)if(b[h]==e.identity){f=!0;break}if(!f&&a)for(var h=0;h<a.length;++h){var i,j;typeof a[h]=="string"?(i=a[h],j=null):(i=a[h].identity,j=a[h].version);if(i==e.identity){j!=null&&j>e.version?g=!0:c=!0;break}}if(c){var k=e.latestVersion?e.version>=e.latestVersion:null;return{status:k?0:1,browser:e}}var l=[];for(var h=0;h<a.length;++h){var m=PleaseUpgrade.data.Browser;for(var n=0;n<m.length;++n)if(m[n].identity==a[h]){l.push(m[n]);break}}return{status:f||g?3:2,allowedBrowsers:l,browser:e}};PleaseUpgrade.check=f}(),SeaMap.config={title:"prespoTitle",baseline:"prespoBaseline",logo:"logo.png",url:"http://seamap/",langs:["eng","fre","por","spa"],pages:{0:"Data",1:"History",2:"Misc",3:"Landings",4:"LandingsHistory",5:"Downloads"},snapshotDate:"14/09/2011",levels:["country","region","subregion","port"],zoomLevelToGeographicalLevel:["country","region","subregion","subregion","port","port","port"],initialZoom:0,maxZoomLevel:6,zoomFactor:1.4,maps:{"default":[{file:"prespo",width:656,height:776,extent:{xmin:-1056514.696764,ymin:4276340.905279,xmax:915723.148144,ymax:6604155.865316}}]},landings:!0,initialTranslate:{x:250,y:100},mapCenterTranslate:{x:530,y:0},downloads:["country.pdf","region.pdf","subregion.pdf"],allowedBrowsers:["Chrome","Firefox","Safari"],forbiddenBrowsers:[]},SeaMap.constants={version:"1.11.6"},SeaMap.I18N=function(){var a=function(a,b,c){var d=/(@{[^}]*})/,e=/#{([^}]+)}/,f=/@{([^(]+)\(([^)]+)\)(,([^)]+))?}/,g=function(a){var c;while(c=a.match(f))a="<"+c[1]+(c[1]=="a"?' href="':' src="')+b[c[2]]+'">'+(c[1]=="a"?c[4]:"")+"</"+c[1]+">";return a},h;while(h=a.match(e))a=a.replace(e,b[h[1]]);var i=a.split(d).map(g).join("");return c&&(i=(new Element("span",c)).update(i)),i},b=function(a){return SeaMap.Resources[a]!==undefined},c=function(b,c){var d=SeaMap.Resources[b.strip()];return window.console&&!d&&console.warn('Resource missing: "'+b+'"'),d?c?a(d,c):d:b},d=function(b,c,d,e){$(b).update(a(c,d,e))},e=function(b,c,d,e){$(b).insert(a(c,d,e))};return{hasTranslation:b,get:c,update:d,insert:e}}(),SeaMap.Utils={},Object.extend(SeaMap.Utils,function(){function d(a){this.duration=a,this.timer=null,this.elapsed=0}var a=function(){var a=0,b=0;return window.innerWidth?(a=window.innerWidth,b=window.innerHeight):document.documentElement.clientWidth!=0?(a=document.documentElement.clientWidth,b=document.documentElement.clientHeight):(a=document.body.clientWidth,b=document.body.clientHeight),{width:a,height:b}},b={segments:function(a,b){return a.min<=b.min&&b.min<=a.max||b.min<=a.min&&a.min<=b.max?{min:Math.max(a.min,b.min),max:Math.min(a.max,b.max)}:null},rectangles:function(a,b){var c=this.segments({min:a.xmin,max:a.xmax},{min:b.xmin,max:b.xmax});if(c){var d=this.segments({min:a.ymin,max:a.ymax},{min:b.ymin,max:b.ymax});return d?{xmin:c.min,ymin:d.min,xmax:c.max,ymax:d.max}:null}return null}},c={segments:function(a,b,c){return c=c===undefined?0:c,b==null||a!=null&&a.min-Math.abs(a.min)*c/100<=b.min&&b.max<=a.max+Math.abs(a.max)*c/100},rectangles:function(a,b,c){return c=c===undefined?0:c,b==null||a!=null&&this.segments({min:a.xmin,max:a.xmax},{min:b.xmin,max:b.xmax},c)&&this.segments({min:a.ymin,max:a.ymax},{min:b.ymin,max:b.ymax},c)}};d.prototype={setUpdateCallback:function(a){this.updateCallback=a},setFinishCallback:function(a){this.finishCallback=a},setFps:function(a){this.fps=a},setDuration:function(a){this.elapsed=this.elapsed*a/this.duration,this.duration=a},animate:function(){var a=function(){var a=(new Date).getTime();if(a-b>=this.duration){this.stop(),this.updateCallback(1),this.finishCallback&&this.finishCallback();return}this.elapsed=a-b,this.updateCallback(this.elapsed/this.duration)},b=(new Date).getTime()-this.elapsed;this.timer=setInterval(a.bind(this),1e3/(this.fps?this.fps:60))},play:function(){this.animate()},pause:function(){this.timer&&(clearInterval(this.timer),this.timer=null)},stop:function(){this.pause(),this.elapsed=0},isPlaying:function(){return this.timer!=null},getK:function(){return this.elapsed/this.duration}};var e=function(a,b){for(var c in b.prototype)c in a.prototype||(a.prototype[c]=b.prototype[c]);return a},f=function(a,b){var c=Math.floor(a),d=(a-c).toFixed(b);d==1?(d=0,c+=1):d=d.toString().replace("0.",".");var e=/[0-9]{3}$/,f="";while(c.length>3){var g=e.exec(c)[0];f=g+(f.length!=0?" ":"")+f,c=c.substr(0,c.length-3)}return f=c+(f.length!=0?" ":"")+f+(d!=0?d:""),f};return{windowSize:a,Intersection:b,Enclose:c,Animator:d,extend:e,numberFormatter:f}}()),SeaMap.Popup=Class.create({initialize:function(a){this.popup=new Element("div",{"class":"popup"}),this.container=new Element("div",{"class":"popupContainer"}),this.content=new Element("div",{"class":a}),this.closeButton=(new Element("div",{"class":"closeContainer"})).update(new Element("img",{src:"img/close.png","class":"close"})),this.container.insert(this.content),this.popup.insert(this.container),this.container.insert(this.closeButton),document.body.insert(this.popup)},open:function(){Event.observe(this.closeButton,"click",this.close.bind(this)),this.popup.hide(),this.hideWaiter=SeaMap.showWaiter()},setSize:function(a,b){a&&(Prototype.Browser.IE&&this.container.setStyle({width:a+15+"px"}),this.content.setStyle({width:a+"px"})),b&&this.container.setStyle({height:b+"px"})},insert:function(a){this.popup.show(),this.content.insert(a)},close:function(){this.popup.hide(),this.hideWaiter(),this.popup.update(),Event.stopObserving(this.closeButton),this.popup.remove()}}),SeaMap.PageManagerBase=Class.create({initialize:function(){this.currentPage=null},openPageId:function(a,b){var c;return a?c=this.openPage(this.getPage(a),b):c=this.openPage(Object.values(this.pages)[0],b),c},openPage:function(a,b){var c=null;return b!==null&&(b?c=SeaMap.dataManager.getPoi(b):this.currentPage&&this.currentPage.poi&&(c=this.currentPage.poi)),this.currentPage&&a!=this.currentPage&&this.currentPage.close(),this.currentPage=a,this.currentPage.open(c)},getCurrentPage:function(){return this.currentPage},getPage:function(a){var b=this.pages.find(function(b){return b.id==a});return b},initialState:function(){this.currentPage&&this.currentPage.poi&&this.currentPage.poi.unhighlight(),this.openPageId()}}),SeaMap.Rasterizer=function(){var a=function(b){var c=["<"+b.localName];c=c.concat($A(b.attributes).map(function(a){return a.nodeName+'="'+a.nodeValue+'"'})),c.push(">");if(b.tagName=="text")c.push(b.textContent);else{var d=[],e=b.firstElementChild;while(e!=null)d.push(e),e=e.nextElementSibling;c=c.concat($A(d).map(a))}return c.push("</"+b.localName+">"),c.join(" ")},b=function(a,b,c){return(new Async.AjaxRequest("rasterizer",{parameters:{width:b,height:c,svg:a}},"raster script")).call()};return{svgExtract:a,rasterize:b}}(),SeaMap.Subpage=Class.create({initialize:function(a,b,c){this.button=(new Element("div",{"class":"subpageButton"})).update((new Element("div",{id:a})).update(SeaMap.I18N.get(a).toUpperCase())),b.insert(this.button),this.container=(new Element("div",{"class":"subpage"})).hide(),c.insert(this.container),this.contents=[],this.built=!1,this.poi=null},addContent:function(a){this.contents.push(a)},open:function(a){this.button.addClassName("highlighted"),this.container.show(),this.built||(this.built=!0,this.contents.invoke("create",this.container)),this.contents.invoke("open"),a&&(SeaMap.instance.beforeUpdate(),this.update(a),SeaMap.instance.afterUpdate())},close:function(){this.button.removeClassName("highlighted"),this.contents.each(function(a){a.graph&&Object.values(Javlot.Motion).indexOf(a.graph.constructor)!=-1&&a.graph.pause()}),this.container.hide()},update:function(a){if(this.poi==a)return;this.poi=a,this.contents.invoke("updater",a)}}),SeaMap.Page=Class.create({initialize:function(a,b,c,d){this.content=(new Element("div",{id:"page"+a})).hide(),$("pages").insert({top:this.content}),this.id=a,this.poi=null,this.built=!1,b&&(this.button=(new Element("div",{"class":"pageButton",id:a})).update((new Element("div")).update(c.toUpperCase())),b.insert(this.button));if(d){this.subpages=$H();var e=new Element("div",{id:"buttons"}),f;Prototype.Browser.IE?f=0:f=Math.floor
(($("dataContainer").getWidth()-176*d.length)/(d.length+1));var g=function(){e.insert((new Element("div",{"class":"subpageButton empty",style:"width: "+f+"px"})).update(new Element("div")))};this.content.insert(e),d.each(function(a){g(),this.subpages.set(a,new SeaMap.Subpage(a,e,this.content))}.bind(this)),g(),Event.observe(e,"click",this.openSubpage.bind(this)),this.subpage=this.subpages.get(d[0])}},open:function(a){this.button&&this.button.addClassName("highlighted"),this.subpage&&a!==null&&this.subpage.open(),a===null||!a.hasData(this.domain,this.subdomain)?(this.content.hide(),this.poi=null):this.content.show(),_gaq&&_gaq.push(["_trackEvent","page","open",this.id]);var b=SeaMap.updatePois();return a&&b.addCallback(new Async.DeferredCallback(function(){this.update(a)}.bind(this))),b},close:function(){this.button&&this.button.removeClassName("highlighted"),this.subpage&&this.subpage.close(),this.content.hide()},openSubpage:function(a){var b=a.findElement().id;b&&this.openSubpageId(b)},openSubpageId:function(a){this.subpage&&this.subpage.close(),this.subpage=this.subpages.get(a),this.subpage.open(this.poi)},update:function(a){if(this.poi==a)return(new Async.DeferredRequest("page update")).call();this.content.show();var b=SeaMap.dataManager.getPoisList(),c;return b.length==0?c=SeaMap.updatePois():a&&!a.flags[this.id]?c=SeaMap.updatePoisData():c=(new Async.DeferredRequest("page update")).call(),a&&(c.addCallback(new Async.DeferredCallback(function(){this.poi=SeaMap.dataManager.getPoi(a.code),this.subpage&&this.subpage.open(this.poi)}.bind(this))),_gaq&&_gaq.push(["_trackEvent","poi","view",a.code])),c},rasterize:function(){var a=[],b=this.contents.map(function(a){if(a.graph){var b=a.graph.getSvgNode();return{name:a.id,node:b,width:a.width,height:a.height}}}).compact(),c;return Prototype.Browser.IE?c=$("map").contentWindow.document.body.firstChild:c=$("map").contentDocument.documentElement,b.push({name:"map",node:c,width:SeaMap.Map.getWidth(),height:SeaMap.Map.getHeight()}),b.each(function(b){var c=b.node.parentNode.nodeName=="#document",d=null;c?d='<?xml-stylesheet type="text/css" href="'+SeaMap.config.url+'css/map.css" ?>'+SeaMap.Rasterizer.svgExtract(b.node):d='<?xml-stylesheet type="text/css" href="'+SeaMap.config.url+'css/seamap.css" ?>'+b.node.parentNode.innerHTML;var e=SeaMap.Rasterizer.rasterize(d,b.width,b.height);e.addCallback(new Async.DeferredCallback(function(a){var c={};return c[b.name]={width:b.width,height:b.height,filename:a.responseJSON.filename},c})),a.push(e)}),new Async.DeferredArray(a,"rasterize")}}),SeaMap.Graph=Class.create({initialize:function(a,b,c,d,e,f,g,h){this.id=a,this.graphClass=b,this.label=c,this.width=d,this.height=e,this.series=h,this.graphOptions=f,this.graphConfig=g},create:function(a){var b=new Element("div",{id:this.id,"class":"graph"});a.appendChild(b),this.graph=new this.graphClass(b,this.width,this.height,this.graphOptions),this.graphConfig.ticksFormatters&&this.graph.setTicksFormatters(this.graphConfig.ticksFormatters),this.graphConfig.threshold&&this.graph.setThreshold(this.graphConfig.threshold),this.graphConfig.infoFormatter&&this.graph.setInfoFormatter(this.graphConfig.infoFormatter)},open:function(){},reset:function(){this.graph.reset(),this.graph.setTitle(this.label,{x:"left",y:"top"})},updater:function(a){if(a){this.reset();var b=this.series.map(function(b){var c=a.getData(b.domain,b.subdomain,b.data);return c?{id:b.id,data:c,legend:b.legend,color:b.color}:null}).compact();b.length>0&&b[0].data&&(b.each(function(a){this.graph.addSerie(a.id,a.data,a.legend,a.color)}.bind(this)),this.graphConfig.boundsX&&this.graph.setBoundsX(this.graphConfig.boundsX),this.graphConfig.boundsY&&this.graph.setBoundsY(this.graphConfig.boundsY)),this.graph.draw()}}}),SeaMap.Data=Class.create(SeaMap.Page,{initialize:function($super,a,b){$super(a,b,SeaMap.I18N.get("dataTitle")+" - "+SeaMap.config.snapshotDate,["vessels","gearDistribution"]),this.domain="fleet",this.subdomain="data",this.comparatorWidth=292;var c=this.subpages.get("vessels"),d=this.subpages.get("gearDistribution");this.contents=SeaMap.Data.contents(),c.addContent(this.contents[0]),c.addContent(this.contents[1]),c.addContent(this.contents[2]),c.addContent(this.contents[3]),d.addContent(this.contents[4]),d.addContent(this.contents[5]),this.info=new Element("div",{id:"info"});var e=new Element("div");SeaMap.I18N.update(e,SeaMap.I18N.get("sources"),{url:"http://ec.europa.eu/fisheries/fleet/",title:SeaMap.I18N.get("europeanFleetRegister")}),this.info.insert(e),this.content.insert(this.info)},open:function($super,a){var b=$super(a);return this.content.show(),b},update:function($super,a){return this.info&&(this.info.remove(),this.info=null),$super(a)}}),SeaMap.Data.contents=function(){var a=[{id:"vessels",domain:"fleet",subdomain:"data",data:"loa",legend:SeaMap.I18N.get("vessels")}],b=new SeaMap.Graph("vesselsByLengthClass",Javlot.Plot.Pie,SeaMap.I18N.get("byLengthClass"),250,200,{palette:"red"},{threshold:5},a),a=[{id:"vessels",domain:"fleet",subdomain:"data",data:"powerMain",legend:SeaMap.I18N.get("vessels")}],c=new SeaMap.Graph("vesselsByPowerClass",Javlot.Plot.Pie,SeaMap.I18N.get("byPowerClass"),250,200,{palette:"brown"},{threshold:5},a),a=[{id:"vessels",domain:"fleet",subdomain:"data",data:"tonGt",legend:SeaMap.I18N.get("vessels")}],d=new SeaMap.Graph("vesselsByFishingCapacity",Javlot.Plot.Pie,SeaMap.I18N.get("byFishingCapacity"),250,200,{palette:"blue"},{threshold:5},a),a=[{id:"vessels",domain:"fleet",subdomain:"data",data:"ages",legend:SeaMap.I18N.get("vessels"),color:"#21707f"}],e=new SeaMap.Graph("vesselsByAgesClass",Javlot.Plot.Bar,SeaMap.I18N.get("byAgeClass"),250,200,{legend:!1},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},a),f=Class.create({initialize:function(a,b){this.title=SeaMap.I18N.get("gearDistributionByLengthClass",{type:a}).toUpperCase(),this.attribute=b},open:function(){},create:function(a){this.container=a,this.table=new Element("table",{"class":"gears"}),this.container.insert(this.table)},updater:function(a){Prototype.Browser.IE&&(this.gearContainer&&this.container.removeChild(this.gearContainer),this.gearContainer=new Element("div",{"class":"gearsContainer"}),this.container.insert(this.gearContainer),this.gearContainer.insert(this.table));var b=SeaMap.dataManager.getReferential("gear").criteriaTree[2].items;this.table.update((new Element("caption")).update(this.title));var c=a.getData("fleet","data",this.attribute);if(c){var d=(new Element("tr")).insert(new Element("td"));d.insert((new Element("td")).update("< "+SeaMap.instance.constants.loaHistory2Limit+"m")),d.insert((new Element("td")).update("> "+SeaMap.instance.constants.loaHistory2Limit+"m")),this.table.insert(d),c.each(function(a){var c=new Element("tr");c.insert((new Element("td")).update(b[a.gear]?SeaMap.I18N.get("gear_"+a.gear)+" ("+a.gear+")":a.gear)),c.insert((new Element("td")).update(a.below?a.below:0)),c.insert((new Element("td")).update(a.above?a.above:0)),this.table.insert(c)}.bind(this))}else this.table.insert((new Element("tr")).insert((new Element("td",{"class":"noData"})).update("no data")));Prototype.Browser.IE&&(this.gearContainer.innerHTML+="")}}),g=new f(SeaMap.I18N.get("main"),"gearPrinc"),h=new f(SeaMap.I18N.get("secondary"),"gearSec");return[b,c,d,e,g,h]},SeaMap.History=Class.create(SeaMap.Page,{initialize:function($super,a,b){this.domain="fleet",this.subdomain="history",this.comparatorWidth=530,$super(a,b,SeaMap.I18N.get("historyTitle"),["animations","perYear"]);var c=this.subpages.get("animations"),d=this.subpages.get("perYear"),e=SeaMap.History.contents();c.addContent(e[0]),c.addContent(e[1]),c.addContent(e[2]),c.addContent(e[3]),d.addContent(e[4]),d.addContent(e[5]),d.addContent(e[6]),d.addContent(e[7])},updateGraphs:function(a){this.contents.invoke("updater",a)}}),SeaMap.History.contents=function(){var a=function(a){return"("+Math.round(a.vessels)+" "+SeaMap.I18N.get("vessels")+")"},b=[{id:"vessels",domain:"fleet",subdomain:"history",data:"loaHistory",legend:SeaMap.I18N.get("vessels"),color:"#a00"}],c=new SeaMap.Graph("loaHistory",Javlot.Motion.MotionBar,SeaMap.I18N.get("byLengthClass"),250,230,{legend:!1,duration:10},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round},infoFormatter:a},b),b=[{id:"vessels",domain:"fleet",subdomain:"history",data:"powerMainHistory",legend:SeaMap.I18N.get("vessels"),color:"#1f6e80"}],d=new SeaMap.Graph("powerHistory",Javlot.Motion.MotionBar,SeaMap.I18N.get("byPowerClass"),250,238,{legend:!1,duration:10},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round},infoFormatter:a},b),b=[{id:"vessels",domain:"fleet",subdomain:"history",data:"ageHistory",legend:SeaMap.I18N.get("vessels"),color:"#00b0ec"}],e=new SeaMap.Graph("ageHistory",Javlot.Motion.MotionBar,SeaMap.I18N.get("byAgeClass"),250,230,{legend:!1,duration:10},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round},infoFormatter:a},b),b=[{id:"vessels",domain:"fleet",subdomain:"history",data:"tonGtHistory",legend:SeaMap.I18N.get("vessels"),color:"#fc9f00"}],f=new SeaMap.Graph("tonGtHistory",Javlot.Motion.MotionBar,SeaMap.I18N.get("byFishingCapacity"),250,232,{legend:!1,duration:10},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round},infoFormatter:a},b),b=[{id:"below",domain:"fleet",subdomain:"history",data:"loaHistory2b",legend:"<"+SeaMap.instance.constants.loaHistory2Limit+"m",color:"#a00"},{id:"above",domain:"fleet",subdomain:"history",data:"loaHistory2a",legend:">"+SeaMap.instance.constants.loaHistory2Limit+"m",color:"#fc9f00"}],g=new SeaMap.Graph("loaHistory2",Javlot.Plot.Bar,SeaMap.I18N.get("byLengthClass"),500,280,{legend:!0},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b),b=SeaMap.dataManager.classes.powerMain.map(function(a){return{id:a.l,domain:"fleet",subdomain:"history",data:"powerMainHistory2"+a.v,legend:a.l}}),h=new SeaMap.Graph("powerMainHistory2",Javlot.Plot.StackedBar,SeaMap.I18N.get("byPowerClass"),500,280,{palette:"brown"},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b),b=SeaMap.dataManager.classes.ages.map(function(a){return{id:a.l,domain:"fleet",subdomain:"history",data:"ageHistory2"+a.v,legend:a.l}}),i=new SeaMap.Graph("ageHistory2",Javlot.Plot.StackedBar,SeaMap.I18N.get("byAgeClass"),500,280,{palette:new Javlot.Palette(SeaMap.dataManager.classes.ages.length,"red")},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b),b=SeaMap.dataManager.classes.tonGt.map(function(a){return{id:a.l,domain:"fleet",subdomain:"history",data:"tonGtHistory2"+a.v,legend:a.l}}),j=new SeaMap.Graph("tonGtHistory2",Javlot.Plot.StackedBar,SeaMap.I18N.get("byFishingCapacity"),500,280,{palette:"brown"},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b);return[c,d,e,f,g,h,i,j]},SeaMap.Misc=Class.create(SeaMap.Page,{initialize:function($super,a,b){this.domain="fleet",this.subdomain="misc",this.comparatorWidth=520,$super(a,b,SeaMap.I18N.get("miscTitle"),["power"]);var c=this.subpages.get("power"),d=SeaMap.Misc.contents();c.addContent(d[0]),c.addContent(d[1])}}),SeaMap.Misc.contents=function(){var a=Class.create(SeaMap.Graph,{updater:function($super,a){var c=function(c){return Math.round(Math.exp(c/a.getData(b[0].domain,b[0].subdomain,b[0].data).k))};this.graph.setTicksFormatters({zTicksFormatter:c}),$super(a)}}),b=[{id:"vessels",domain:"fleet",subdomain:"misc",data:"lengthPower",legend:SeaMap.I18N.get("vessels"),color:"#1f6e80"}],c=new a("vesselsByLengthPower",Javlot.Plot.Disk,SeaMap.I18N.get("byLengthPowerClass"),500,300,{legend:!0},{boundsX:{min:0},boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b),b=[{id:"vessels",domain:"fleet",subdomain:"misc",data:"lengthTonGt",legend:SeaMap.I18N.get("vessels"),color:"#fc9f00"}],d=new a("vesselsByLengthTonGt",Javlot.Plot.Disk,SeaMap.I18N.get("byLengthFishingCapacityClass"),500,300,{legend:!0},{boundsX:{min:0},boundsY:{min:0},ticksFormatters:{yTicksFormatter:Math.round}},b);return[c,d]},SeaMap.Landings=Class.create(SeaMap.Page,{initialize:function($super,a,b){this.domain="landings",this.subdomain="landings",this.comparatorWidth=292,$super(a,b,SeaMap.I18N.get("landingsTitle"),["value","weight"]);var c=this.subpages.get("value"),d=this.subpages.get("weight");this.contents=SeaMap.Landings.contents(),c.addContent(this.contents[0]),c.addContent(this.contents[1]),d.addContent(this.contents[2]),d.addContent(this.contents[3])}}),SeaMap.Landings.contents=function(){var a=new Javlot.Palette([{color:Svgvml.colors.darkblue},{color:Svgvml.colors.lightsalmon},{color:Svgvml.colors.lime},{color:Svgvml.colors.crimson},{color:Svgvml.colors.green},{color:Svgvml.colors.cyan},{color:Svgvml.colors.yellow},{color:Svgvml.colors.darkviolet},{color:Svgvml.colors.darkgrey},{color:Svgvml.colors.lightpink}]),b=[{id:"species",domain:"landings",subdomain:"landings",data:"2009-allvalue",legend:"etotdd"}],c=new SeaMap.Graph("byValueAll",Javlot.Plot.Pie,SeaMap.I18N.get("allFleet"),450,250,{palette:a},{ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},b),b=[{id:"species",domain:"landings",subdomain:"landings",data:"2009-artisanalvalue",legend:SeaMap.I18N.get("byValue")}],d=new SeaMap.Graph("byValueArtisanal",Javlot.Plot.Pie,SeaMap.I18N.get("artisanalFleet"),450,250,{palette:a},{ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},b),b=[{id:"species",domain:"landings",subdomain:"landings",data:"2009-allweight",legend:SeaMap.I18N.get("byWeight")}],e=new SeaMap.Graph("byWeightAll",Javlot.Plot.Pie,SeaMap.I18N.get("allFleet"),450,250,{palette:a},{ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},b),b=[{id:"species",domain:"landings",subdomain:"landings",data:"2009-artisanalweight",legend:SeaMap.I18N.get("byWeight")}],f=new SeaMap.Graph("byWeightArtisanal",Javlot.Plot.Pie,SeaMap.I18N.get("artisanalFleet"),450,250,{palette:a},{ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},b);return[c,d,e,f]},SeaMap.LandingsHistory=Class.create(SeaMap.Page,{initialize:function($super,a,b){this.domain="landings",this.subdomain="history",this.comparatorWidth=292,$super(a,b,SeaMap.I18N.get("landingsHistoryTitle"),["value","weight"]);var c=this.subpages.get("value"),d=this.subpages.get("weight");this.contents=SeaMap.LandingsHistory.contents(),c.addContent(this.contents[0]),c.addContent(this.contents[1]),d.addContent(this.contents[2]),d.addContent(this.contents[3])}}),SeaMap.LandingsHistory.contents=function(){var a=[{id:"species",domain:"landings",subdomain:"history",data:"allvalue",legend:SeaMap.I18N.get("byValue"),color:"#21707f"}],b=new SeaMap.Graph("byValueAll",Javlot.Motion.MotionBar,SeaMap.I18N.get("allFleet"),450,350,{legend:!1,duration:10,maxFps:1},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},a),a=[{id:"species",domain:"landings",subdomain:"history",data:"artisanalvalue",legend:SeaMap.I18N.get("byValue"),color:"#21707f"}],c=new SeaMap.Graph("byValueArtisanal",Javlot.Motion.MotionBar,SeaMap.I18N.get("artisanalFleet"),450,350,{legend:!1,duration:10,maxFps:1},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},a),a=[{id:"species",domain:"landings",subdomain:"history",data:"allweight",legend:SeaMap.I18N.get("byWeight"),color:"#21707f"}],d=new SeaMap.Graph("byWeightAll",Javlot.Motion.MotionBar,SeaMap.I18N.get("allFleet"),450,350,{legend:!1,duration:10,maxFps:1},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},a),a=[{id:"species",domain:"landings",subdomain:"history",data:"artisanalweight",legend:SeaMap.I18N.get("byWeight"),color:"#21707f"}],e=new SeaMap.Graph("byWeightArtisanal",Javlot.Motion.MotionBar,SeaMap.I18N.get("artisanalFleet"),450,350,{legend:!1,duration:10,maxFps:1},{boundsY:{min:0},ticksFormatters:{yTicksFormatter:function(a){return Math.round(a/1e3)}}},a);return[b,c,d,e]},SeaMap.Downloads=Class.create(SeaMap.Page,{initialize:function($super,a,b){$super(a,b,SeaMap.I18N.get("pdf"),[])},build:function(){var a=new Element("ul");this.content.insert(a),SeaMap.config.downloads.each(function(b){a.insert((new Element("li")).update((new Element("a",{href:"instance/data/"+b})).update(b)))})},open:function($super,a){this.built||(this.built=!0,this.build());var b=$super(a);return this.content.show(),b},update:function(a){if(this.poi==a)return;return this.poi=a,(new Async.DeferredRequest("page update")).call()}}),SeaMap.PageManager=Class.create(SeaMap.PageManagerBase,{initialize:function($super){$super();var a=$("buttons");this.pages=Object.keys(SeaMap.config.pages).sort(function(a,b){return a-b}).map(function(b){var c=SeaMap.config.pages[b],d=new SeaMap[c](c,a);return d}.bind(this));var b=$("buttons").childElements().inject(5,function(a,b){return a+2+b.getWidth()});a.setStyle({width:b+"px"}),this.animator=new SeaMap.Utils.Animator(300);var c=function(b){var c=parseInt(a.getStyle("left")),d=parseInt($("buttonsContainer").getStyle("width"))-parseInt(a.getStyle("width")),e=Math.max(d,Math.min(0,c+b)),f=function(b){var d=c+b*(e-c);a.setStyle({left:d+"px"})},g=function(){$("buttonsLeft").setStyle("visibility: "+(e==0?"hidden":"visible")),$("buttonsRight").setStyle("visibility: "+(e==d?"hidden":"visible"))};this.animator.setUpdateCallback(f),this.animator.setFinishCallback(g),this.animator.play()};Event.observe(a,"click",function(b){var d=b.target.parentNode,e=parseInt(d.getStyle("width")),f=parseInt($("buttonsContainer").getStyle("width")),g=parseInt(a.getStyle("left")),h=d.offsetLeft;h+g<0?c.call(this,(f-e)/2-h-g):h+e>f&&c.call(this,(f-e)/2-h),this.openPageId(b.findElement(".pageButton").id)}.bind(this)),parseInt($("buttonsContainer").getStyle("width"))<parseInt($("buttons").getStyle("width"))&&(c.call(this,0),$("buttonsRight").observe("click",c.bind(this,-180)),$("buttonsLeft").observe("click",c.bind(this,180)));var d=$("footer");SeaMap.I18N.update(d,SeaMap.I18N.get("realizedBy"),{url:"http://wemake.fr",name:"wemake"}),SeaMap.config.langs.each(function(a){a!=SeaMap.getLang()&&(d.insert(" · "),SeaMap.I18N.insert(d,SeaMap.I18N.get(a),null,{id:a}),$(a).observe("click",SeaMap.reload.curry({lang:a})))}),d.insert(" · "),d.insert((new Element("a",{href:"data/help.pdf",target:"blank",id:"help"})).update(SeaMap.I18N.get("help")))},openPage:function($super,a,b){return $("buttonsContainer").removeClassName("initialState"),$super(a,b)}}),SeaMap.instance={},SeaMap.instance.constants={version:"1.0.2",loaHistory2Limit:12},Object.extend(SeaMap.instance,function(){var a=function(){var a=new Element("div",{id:"dataContainer"}),b=new Element("div",{id:"header"});a.insert(b),b.insert(new Element("div",{id:"breadcrumb"})),b.insert(new Element("div",{id:"dataTitle"})),b.insert(new Element("div",{id:"dataFigures"}));var c=new Element("div",{id:"selection"});c.insert((new Element("div",{id:"images"})).insert((new Element("img",{id:"action"})).hide())),c.insert(new Element("div",{id:"content"})),b.insert(c),b.insert((new Element("span",{id:"buttonsLeft"})).update("<").setStyle({visibility:"hidden"})),b.insert((new Element("span",{id:"buttonsRight"})).update(">").setStyle({visibility:"hidden"})),b.insert((new Element("div",{id:"buttonsContainer"})).insert((new Element("div",{id:"buttons"})).setStyle({left:0}))),a.insert(new Element("div",{id:"pages"})),a.insert(new Element("div",{id:"footer"}));var d=(new Element("div",{id:"minimizer"})).update("<"),e=(new Element("div",{id:"containerToolbar"})).insert(d),f=$("toolbar");f.insert({before:a}),f.insert({before:e}),this.beforeUpdate.defer(),d.observe("click",this.toggleDataContainer.bind(this)),this.animator=new SeaMap.Utils.Animator(500),SeaMap.addResizeObserver(function(){this.beforeUpdate(),this.afterUpdate()}.bind(this))},b=function(a){$("breadcrumb").update(),$("dataTitle").update(SeaMap.I18N.get(SeaMap.config.title)),$("dataFigures").update(SeaMap.config.baseline?SeaMap.I18N.get(SeaMap.config.baseline):""),SeaMap.setSelection([]),SeaMap.pageManager.initialState()},c=function(a,b){b?a.setStyle({top:0,left:0,width:document.body.scrollWidth,height:document.body.scrollHeight}):a.clonePosition($("dataContainer"))},d=function(a){var b=$("dataTitle"),c=$("dataFigures"),d=$("breadcrumb");b.update(a.name.toUpperCase()),c.update(a.vessels+" "+SeaMap.I18N.get("vessels")+", "+a.power+" kw");var e=SeaMap.dataManager.getNames(),f=SeaMap.config.levels.map(function(b){return b==a.level?a.code:a[b]}).compact(),g=(new Element("span",{"class":"breadcrumb"})).update(SeaMap.I18N.get("home"));Event.observe(g,"click",SeaMap.initialState.curry(!1)),d.update(g);for(var h=0;h<f.length-1;++h){var i=f[h],j=(new Element("span",{"class":"breadcrumb"})).update((h==0?SeaMap.I18N.get("country_"+i):e[i]).toUpperCase()),k=function(a){return SeaMap.showPoi.curry(a,!0,!1)};j.observe("click",k(i)),d.insert((new Element("span",{"class":"breadcrumbSeparator"})).update("l")),d.insert(j)}},e=function(){var a,b=SeaMap.showWaiter(),c=SeaMap.config.zoomLevelToGeographicalLevel[SeaMap.Map.getZoomLevel()];return a=SeaMap.dataManager.updateVisiblePois(c).addCallback(new Async.DeferredCallback(function(){var a=SeaMap.getCurrentPage();SeaMap.Map.buildPois(c,a?a.domain:null,a?a.subdomain:null),b()},b)),a.handleCancel=b,a},f=function(a,b){var c,d=showWaiter(),e;if(b)e=b;else{var f=getCurrentPage();e=f?f.id:null}var c=dataManager.updateData(e,a);return c.addCallback(new Async.DeferredCallback(d,d)),c},g=function(){if(!Prototype.Browser.IE){var a=$("dataContainer"),b=a.cumulativeOffset().top;a.style.height=SeaMap.Utils.windowSize().height-b+"px"}},h=function(){if(!Prototype.Browser.IE){var a=$("dataContainer"),b=a.cumulativeOffset().top;(function(){var c=document.body.scrollHeight;c-b>parseInt(a.style.height)&&(c+=20),a.style.height=c-b+"px"}).defer()}},i=function(){var a=SeaMap.getSelection(),b=new SeaMap.Popup("comparator"),c=SeaMap.getCurrentPage();b.setSize(c.comparatorWidth*a.length+(Prototype.Browser.IE?25:0),null),b.open(),function(){SeaMap.updateSelectedPoisData(c.id).addCallback(new Async.DeferredCallback(function(){a.each(function(a){var d=(new Element("div",{"class":"graphContainer",width:c.comparatorWidth+"px"})).insert((new Element("div",{"class":"title"})).update(a.name)),e=c.constructor.contents();e.invoke("create",d),b.insert(d),e.invoke("updater",a)})}))}.defer()},j=function(a){var b=function(a){var b=$$("#selection #action")[0];if(!a)Event.stopObserving(b),b.hide();else{var c=null,d=null;a=="lock"?c="lock.png":(c="search.png",d=i),b.src="img/"+c,d?Event.observe(b,"click",d):Event.stopObserving(b),b.show()}},c=$$("#selection #content")[0],d=SeaMap.getSelection();a.reject(function(a){return d.indexOf(a)>=0}).invoke("unhighlight");var e="";d.length==0?b():(b(d.length==1?"lock":"compare"),e=d.reverse().pluck("name").join(", ")),c.update(e),d.reject(function(b){return a.indexOf(b)>=0}).invoke("highlight")},k=function(a,b){var c=$("containerToolbar"),d=$("dataContainer"),e=function(a){var b=j+a*(k-j);d.setStyle({left:b+"px"}),c.setStyle({left:h+b+"px"})},f=function(){$("minimizer").update(g==0?"&gt;":"&lt;"),b&&b()},g=parseInt(d.getStyle("left")),h=d.getDimensions().width,i=$("loader"),j,k;g==0?(i.removeClassName("plainLoader"),i.addClassName("toolbarLoader"),j=0,k=-h):(i.removeClassName("toolbarLoader"),i.addClassName("plainLoader"),j=-h,k=0),this.animator.setUpdateCallback(e),this.animator.setFinishCallback(f),this.animator.play()},l=function(a,b){var c=parseInt(dataContainer.getStyle("left"))==0==a;c?k(null,b):b&&b()},m=function(a){l(!1,a)},n=function(a){l(!0,a)},o=function(a){var b=$("containerToolbar"),c=$("dataContainer"),d=function(a){var d=start+a*(stop-start);c.setStyle({opacity:d}),b.setStyle({opacity:d})},e=function(){c.hide(),b.hide()};a?(c.show(),b.show(),start=0,stop=1):(start=1,stop=0),this.animator.setUpdateCallback(d),this.animator.setFinishCallback(a?null:e),this.animator.play()};return{seamapInit:a,seamapInitialState:b,veilWillBeShown:c,pageUpdated:d,updatePois:e,updateData:f,toggleDataContainer:k,selectionUpdated:j,openDataContainer:m,closeDataContainer:n,beforeUpdate:g,afterUpdate:h,map:{init:Prototype.K,startDraggingCallback:o.bind(SeaMap.instance,!1),draggingCallback:Prototype.K,endDraggingCallback:o.bind(SeaMap.instance,!0),doubleClickCallback:Prototype.K}}}()),SeaMap.Pdf={generatePdf:function(a,b){var c=function(){var b=(new Async.DeferredRequest("pdf: processPois")).call(),c=[],d=SeaMap.dataManager.getNames();return SeaMap.dataManager.getPoisList().each(function(e){b.addCallback(new Async.DeferredCallback(function(){return SeaMap.showPoi(e,!0).addCallback(new Async.DeferredCallback(SeaMap.Map.activateMapFeatures.curry(e,!0))).addCallback(new Async.DeferredCallback(function(){return SeaMap.getCurrentPage().rasterize().addCallback(new Async.DeferredCallback(function(b){var f=b.inject({},function(a,b){return Object.extend(a,b)}),g=SeaMap.Map.visibleExtent2Map(e.x,e.y);c.push({poi:d[e.code],country:d[a=="country"?e.code:e.country],urlhash:SeaMap.urlhash(e),data:{x:g.x,y:g.y,images:f}})}))}))}))}),b.addCallback(new Async.DeferredCallback(function(b){(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"pdf",level:a,data:Object.toJSON(c)}},"pdf")).call()}))},d=SeaMap.dataManager.updateAllPois(a);d.addCallback(new Async.DeferredCallback(function(){(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"pdfInit"}},"pdfInit")).call()})).addCallback(new Async.DeferredCallback(c))}},SeaMap.instance.init=function(){return SeaMap.instance.seamapInit(),SeaMap.dataManager=new SeaMap.PrespoDataManager,SeaMap.dataManager.init().addCallback(new Async.DeferredCallback(function(){SeaMap.pageManager=new SeaMap.PageManager}))},SeaMap.instance.initialState=SeaMap.instance.seamapInitialState,Async.DeferredArray=Class.create(Async.DeferredRequest,{initialize:function($super,a,b){$super(b),this.results=[],this.nRequestsPending=a.length,this.failures=0;var c=function(a,b){this.results[a]=b,this.nRequestsPending--,b&&b.constructor==Async.Error&&this.failures++,this.hasMorePending()||this.call(this.failures>0?new Async.Error(this.failures+" deferredArray requests failed"):this.results)}.bind(this);if(a.length==0)this.call(null);else{var d=function(a){return new Async.DeferredCallback(function(b){c(a,b)},function(b){this.handleSuccess(a,b)})};for(var e=0;e<a.length;++e){var f=a[e];f.addCallback(d(e))}}},getResults:function(){return this.results},hasMorePending:function(){return this.nRequestsPending>0}}),SeaMap.Cache=Class.create({initialize:function(a){this.n=a,this.reset()},reset:function(){this.ids=[],this.objects=$H(),this.requests=0,this.hits=0},getIds:function(){return this.ids.clone()},get:function(a){this.requests++;var b=this.objects.get(a);return b==undefined?null:(this.hits++,this.ids.splice(this.ids.indexOf(a),1),this.ids.push(a),b)},set:function(a,b){if(this.objects.get(a))this.ids.splice(this.ids.indexOf(a),1);else if(this.ids.length==this.n){var c=this.ids.shift();this.objects.unset(c)}this.ids.push(a),this.objects.set(a,b)},remove:function(a){this.objects.get(a)&&(this.ids.splice(this.ids.indexOf(a),1),this.objects.unset(a))},stats:function(){return"size: "+this.ids.length+"/"+this.n+" #"+this.requests+"!"+this.hits}}),SeaMap.RequestPois=Class.create({initialize:function(a,b){this.id=a,this.processResponse=b},run:function(a,b,c){SeaMap.dataManager.requestStats.ajax++;var d={ws:"pois"+this.id,level:a,pois:b.join(",")};c&&Object.extend(d,c);var e=(new Async.AjaxRequest("webservices/webservices.php",{parameters:d},"pois"+this.id)).call();return e.addCallback(new Async.DeferredCallback(function(a){SeaMap.dataManager.requestStats.callback++,this.processResponse(a.responseJSON);for(var c=0;c<b.length;c++){var d=b[c],e=SeaMap.dataManager.getPoi(d);e.setFlag(this.id),SeaMap.dataManager.cache[e.level].set(e.code,e)}}.bind(this))),SeaMap.dataManager.activeRequests.push(e),e}}),SeaMap.DataManager=function(){this.pois=null,this.selectedPois=[],this.names=null,this.cache=null,this.referential={},this.delayerTimer={},this.activeRequests=[],this.requestStats={actions:0,ajax:0,callback:0}},SeaMap.DataManager.prototype=function(){function o(a){var b=null,c=null;this.pois&&(c=this.pois.get(a));var d=null;return c||(d=Object.values(this.cache).find(function(b){return b.get(a)}),d&&(c=d.get(a),this.pois.set(c.code,c))),c?b=(new Async.DeferredRequest("poi")).call(c):(this.requestStats.ajax++,b=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"poi",poi:a}},"poi")).call(),b.addCallback(new Async.DeferredCallback(function(b){this.requestStats.callback++;var c=null;if(b.responseJSON){var d=b.responseJSON[0],e=b.responseJSON[1].pois[a];if(e){var f;d=="port"?f=SeaMap.Port:f=SeaMap.PortAggregate;var g=parseFloat(e.x),h=parseFloat(e.y),i=parseFloat(e.vesselsNumber),j=parseFloat(e.vesselsPower),k=SeaMap.Map.getMapWrappers().find(function(a){return a.isInside(g,h)});c=new f(k,e.code,this.names[e.code],g,h,i,j,d,e.country,e.subcountry,e.seaboard,e.region,e.subregion,e.port),this.pois||(this.pois=new Hash),this.pois.set(c.code,c)}}return c}.bind(this)))),this.activeRequests.push(b),b}var a=function(a){return new Async.DeferredArray(a,"Data Manager Initialisation")},b=function(){return this.pois},c=function(){return this.pois?this.pois.values():[]},d=function(a){return this.pois?this.pois.get(a):null},e=function(){return this.names},f=function(){for(var a=0;a<this.selectedPois.length;a++){var b=this.selectedPois[a];this.pois.set(b.code,b)}return this.selectedPois},g=function(a){this.selectedPois=a},h=function(a){this.selectedPois.length==1&&this.selectedPois.indexOf(a)==0?this.selectedPois=[]:this.selectedPois=[a]},i=function(a){var b=this.selectedPois.indexOf(a);b<0?this.selectedPois.push(a):this.selectedPois.splice(b,1)},j=function(a){return m.call(this,a,SeaMap.Map.getVisibleMapWrappers(),!0)},k=function(a){return m.call(this,a,SeaMap.Map.getMapWrappers(),!1)},l=function(a,b,c,d){var d=d||300,e=this.delayerTimer;this.requestStats.actions++,e[a]&&(clearTimeout(e[a].timer),e[a].request.cancel(),e[a].onCancel&&e[a].onCancel());var f=function(){b.call(),delete e[a]};return e[a]={timer:setTimeout(f,d),request:b,onCancel:c},b},m=function(a,b,c){this.activeRequests.invoke("cancel"),this.activeRequests=[];var d=(new Async.DeferredRequest("updateExtentPois")).addCallback(new Async.DeferredCallback(function(){this.pois=$H()}.bind(this)));for(var e=0;e<b.length;e++)d.chainDeferred(p.call(this,a,b[e],c,this.pois));return this.activeRequests.push(d),this.requestDelayer("updateExtentPois",d)},n=function(a,b,c,d,e){this.requestStats.ajax++;var f=c?b.visibleExtent():b.extent,g;return f==null?g=(new Async.DeferredRequest).call():(g=new Async.AjaxRequest("webservices/webservices.php",{parameters:Object.extend({ws:"pois",level:a},f)},"pois"),g.addCallback(new Async.DeferredCallback(function(c){this.requestStats.callback++;var f=c.responseJSON[0],g=$H();for(var h=0;h<f.length;h++){var i=f[h],j=null;e&&(j=e.unset(i.code)),j=j||this.cache[a].get(i.code);if(j==null){var k;a=="port"?k=SeaMap.Port:k=SeaMap.PortAggregate,j=new k(b,i.code,this.names[i.code],parseFloat(i.x),parseFloat(i.y),parseFloat(i.vesselsNumber),parseFloat(i.vesselsPower),a,i.country,i.subcountry,i.seaboard,i.region,i.subregion,i.port)}g.set(i.code,j)}if(d){var l=SeaMap.getPage(d).poi;l&&(SeaMap.Map.isVisible(l)||l.hide(),g.set(l.code,l))}return this.pois=this.pois.merge(g),g.values()}.bind(this)))),this.activeRequests.push(g),g},p=function(a,b,c,d){var e=SeaMap.getCurrentPage();window.console&&(console.log(this.requestStats),console.log(Object.values(this.cache).invoke("stats")));var f=this.requestPois(a,b,c,e?e.id:null,d);return e&&f.addCallback(new Async.DeferredCallback(r.bind(this,e.id))),this.activeRequests.push(f),f},q=function(a){return o.call(this,a)},r=function(a,b){var c=[];if(this.requests[a]){var d=b.reject(function(b){return b.flags[a]});if(d.length!=0){var e=d.pluck("level").uniq();this.requestStats.actions++,c=e.map(function(b){return this.requests[a].run(b,d.filter(function(a){return a.level==b}).pluck("code"))}.bind(this))}}var f=new Async.DeferredArray(c,"updateData");return this.activeRequests.push(f),f},s=function(){var a=null;return this.names?a=(new Async.DeferredRequest("allNames (stub)")).call(this.names):(a=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"allNames"}},"allNames")).call(),a.addCallback(new Async.DeferredCallback(function(a){return this.names=a.responseJSON,this.names}.bind(this)))),a},t=function(a){var b=new RegExp(a,"i"),c=Object.keys(this.names).filter(function(a){return b.test(this.names[a])}.bind(this));return c},u=function(a){return this.referential[a]};return{init:a,updateVisiblePois:j,updateAllPois:k,updateData:r,poiIdentification:q,getPois:b,getPoisList:c,getPoi:d,fetchAllNames:s,getNames:e,searchNames:t,getSelection:f,setSelection
:g,toggleInSingleSelection:h,toggleInSelection:i,requestPois:n,requestDelayer:l,getReferential:u}}(),SeaMap.SeaMapDataManager=function(){function a(a,b){var c=[];return a.each(function(a){a.v in b?c.push({x:a.l,y:b[a.v]}):c.push({x:a.l,y:0})}),c}SeaMap.DataManager.call(this),this.classes={},this.cache={country:new SeaMap.Cache(3),subcountry:new SeaMap.Cache(3),seaboard:new SeaMap.Cache(10),region:new SeaMap.Cache(20),subregion:new SeaMap.Cache(30),port:new SeaMap.Cache(100)},this.requests={},this.requests.Data=new SeaMap.RequestPois("Data",function(b){function i(a,b){a.length!=0&&Object.keys(a).each(function(d){var e=a[d];c.get(d).setData("fleet","data",b,Object.keys(e).collect(function(a){return{gear:a,below:e[a][0],above:e[a][12]}}))})}var c=SeaMap.dataManager.getPois(),d=SeaMap.dataManager.classes,e=b[0];e.length!=0&&Object.keys(e).each(function(b){c.get(b).setData("fleet","data","loa",a(d.loa,e[b]))});var f=b[1];f.length!=0&&Object.keys(f).each(function(b){c.get(b).setData("fleet","data","powerMain",a(d.powerMain,f[b]))});var g=b[2];g.length!=0&&Object.keys(g).each(function(b){c.get(b).setData("fleet","data","tonGt",a(d.tonGt,g[b]))});var h=b[3];h.length!=0&&Object.keys(h).each(function(b){c.get(b).setData("fleet","data","ages",a(d.ages,h[b]))}),i(b[4],"gearPrinc"),i(b[5],"gearSec")});var b=function(b,c,d){var e=SeaMap.dataManager.getPois();Object.keys(b).each(function(f){var g=b[f],h=Object.keys(g).map(parseFloat).sort(function(a,b){return a-b}).collect(function(b){return{date:b,data:a(c,g[b])}});e.get(f).setData("fleet","history",d,h)})},c=function(a,b){var c=SeaMap.dataManager.getPois(),d=function(a){return a.keys().sort(function(a,b){return a-b}).collect(function(b){return{x:b,y:a.get(b)}})};Object.keys(a).each(function(e){var f=a[e],g=new Hash,h=new Hash;Object.keys(f).collect(function(a){var b=f[a];Object.keys(b).each(function(c){var d=c<SeaMap.instance.constants.loaHistory2Limit?g:h,e=d.get(a);d.set(a,(e?e:0)+b[c])})}),c.get(e).setData("fleet","history",b+"b",d(g)),c.get(e).setData("fleet","history",b+"a",d(h))})},d=function(a,b,c){var d=SeaMap.dataManager.getPois(),e=function(a){return a.keys().sort(function(a,b){return a-b}).collect(function(b){return{x:b,y:a.get(b)}})};Object.keys(a).each(function(f){var g=a[f],h=b.pluck("v"),i=h.map(function(){return $H()});Object.keys(g).collect(function(a){var b=g[a];h.each(function(a){b[a]===undefined&&(b[a]=0)}),Object.keys(b).each(function(c){var d=h.indexOf(parseFloat(c)),e=i[d],f=e.get(a);e.set(a,(f?f:0)+b[c])})}),i.each(function(a,b){d.get(f).setData("fleet","history",c+h[b],e(a))})})};this.requests.History=new SeaMap.RequestPois("History",function(a){var e=SeaMap.dataManager.classes,f=a[0];f.length!=0&&(b(f,e.loa,"loaHistory"),c(f,"loaHistory2"));var g=a[1];g.length!=0&&(b(g,e.powerMain,"powerMainHistory"),d(g,e.powerMain,"powerMainHistory2"));var h=a[2];h.length!=0&&(b(h,e.ages,"ageHistory"),d(h,e.ages,"ageHistory2"));var i=a[3];i.length!=0&&(b(i,e.tonGt,"tonGtHistory"),d(i,e.tonGt,"tonGtHistory2"))}),this.requests.Misc=new SeaMap.RequestPois("Misc",function(a){var b=SeaMap.dataManager.classes,c=function(a,b){for(var c=0;b[c].v!=a&&c<b.length-1;++c);return c<b.length-1?(b[c].v+b[c+1].v)/2:b[c].v},d=function(a,b,d,e){var f=SeaMap.dataManager.getPois();Object.keys(a).each(function(g){var h=a[g],i=Object.keys(h).collect(function(a){return Object.keys(h[a]).filter(function(a){return a>=0}).collect(function(e){return{x:c(parseFloat(a),b),y:c(parseFloat(e),d),z:Math.log(h[a][e])}})}).flatten(),j=i.inject(0,function(a,b){return Math.max(a,b.z)}),k=20/(j==0?1:j),i=i.map(function(a){return{x:a.x,y:a.y,z:a.z*k}});i.k=k,f.get(g).setData("fleet","misc",e,i)})},e=a[0];e.length!=0&&d(e,b.loa,b.powerMain,"lengthPower");var f=a[1];f.length!=0&&d(f,b.loa,b.tonGt,"lengthTonGt")})},SeaMap.SeaMapDataManager.prototype=function(){function a(a){var b=[],c=a.length;for(var d=0;d<c;d++){var e=null,f=a[d+1];d==0?e="< "+a[d+1]:d==c-1?e="> "+a[d]:e=a[d]+"-"+a[d+1],b[d]={v:a[d],l:e}}return b}var b=function(){var b=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"classes"}},"classes")).call();return b.addCallback(new Async.DeferredCallback(function(b){this.classes.loa=a(b.responseJSON[0]),this.classes.powerMain=a(b.responseJSON[1]),this.classes.tonGt=a(b.responseJSON[2]),this.classes.ages=a(b.responseJSON[3])}.bind(this))),b},c=function(){var a,b=this.referential;if(b.gear===undefined){var c=[];b.gear={criteriaTree:c,groups:{}},a=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"gears"}},"gearsReferential")).call(),a.addCallback(new Async.DeferredCallback(function(a){["type","group","gear"].each(function(b){var d={},e=a.responseJSON[b];b=="type"?e.each(function(a){d[a]={name:SeaMap.I18N.get("gear_"+a)}}):Object.keys(e).each(function(a){var c=b=="gear"?e[a].parent:e[a];d[a]={name:SeaMap.I18N.get("gear_"+a),parent:c},b=="gear"&&e[a].usage&&(d[a].usage=e[a].usage)}),c.push({levelName:b,items:d})}),b.gear.groups.usage=a.responseJSON.usage}))}else a=(new Async.DeferredRequest).call();return a},d=function(a){var a=a||[];return SeaMap.DataManager.prototype.init.call(this,a.concat([b.call(this),this.fetchAllNames(),c.call(this)]))};return{init:d}}(),SeaMap.Utils.extend(SeaMap.SeaMapDataManager,SeaMap.DataManager),SeaMap.SeaMapDataManager.prototype.constructor=SeaMap.SeaMapDataManager,function(){var a=function(a,b,c,d){var e=a.getPois(),f=a.getReferential("species");Object.keys(b).each(function(a){var g=b[a],h=[],i=[];Object.keys(g).sort().each(function(b){var b=parseInt(b),j=Object.keys(g[b]).map(function(a){var c=f[a].capitalize();return i.push(c),{x:c,y:g[b][a]}}).reverse();h.push({date:b,data:j}),e.get(a).setData("landings","landings",b+"-"+c+d,j)}),i=i.uniq(),h.each(function(a){speciesWithData=a.data.pluck("x"),i.each(function(b){speciesWithData.indexOf(b)==-1&&a.data.push({x:b,y:0})})}),e.get(a).setData("landings","history",c+d,h)})},b=function(b,c){return new SeaMap.RequestPois(c,function(c){c[0].length!=0&&a(b,c[0],"artisanal","weight"),c[1].length!=0&&a(b,c[1],"artisanal","value"),c[2].length!=0&&a(b,c[2],"all","weight"),c[3].length!=0&&a(b,c[3],"all","value")})},c=function(a){var b,c=a.referential;return c.species===undefined?(b=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"species"}},"speciesReferential")).call(),b.addCallback(new Async.DeferredCallback(function(a){c.species=a.responseJSON}))):b=(new Async.DeferredRequest).call(),b};SeaMap.PrespoDataManager=function(){SeaMap.SeaMapDataManager.call(this),this.requests.Landings=b(this,"Landings"),this.requests.LandingsHistory=b(this,"LandingsHistory")},SeaMap.PrespoDataManager.prototype={init:function(){return SeaMap.SeaMapDataManager.prototype.init.call(this,[c(this)])}},SeaMap.Utils.extend(SeaMap.PrespoDataManager,SeaMap.SeaMapDataManager),SeaMap.PrespoDataManager.prototype.constructor=SeaMap.PrespoDataManager}(),SeaMap.Poi=Class.create({initialize:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){this.mapWrapper=a,this.code=b,this.name=(h=="country"?SeaMap.I18N.get("country_"+b):c).toUpperCase(),this.x=d,this.y=e,this.level=h,this.vessels=f,this.power=g,this.flags={},this.data={},this.country=i,this.subcountry=j,this.seaboard=k,this.region=l,this.subregion=m,this.port=n},draw:function(a,b){this.createPin(a),this.pin.insertAtTop(b)},applyTransform:function(a){this.pin.applyTransform(a)},build:function(a,b,c,d,e){this.pin?(this.show(),this.pin.insertAtTop(b)):(this.draw(a,b),this.addEvents(c.curry(this),d.curry(this),e.curry(this)));var f=SeaMap.Map.extent2Map(this.mapWrapper,this.x,this.y);this.applyTransform(Svgvml.Matrix2D.translate(f.x,f.y))},hide:function(){this.pin&&this.pin.hide()},show:function(){this.pin&&this.pin.show()},highlight:function(){if(SeaMap.Poi.highlighted==this)return;SeaMap.Poi.highlighted&&SeaMap.getSelection().indexOf(SeaMap.Poi.highlighted)<0&&SeaMap.Poi.highlighted.unhighlight(),this.pin?(SeaMap.Poi.highlighted=this,this.pin.addClassName(this.constructor.highlightedClass),SeaMap.Map.activateMapFeatures(this,!0)):SeaMap.Poi.highlighted=null},unhighlight:function(){this.pin&&this.pin.removeClassName(this.constructor.highlightedClass),SeaMap.Poi.highlighted=null,SeaMap.Map.activateMapFeatures(this,!1)},mouseEnter:function(a,b){this.highlight();var c=SeaMap.getCurrentPage();if(c&&this==c.poi)return;var d=SeaMap.getSelection();if(d.length==1&&!b.ctrlKey)return;a.defer(this)},mouseLeave:function(){var a=SeaMap.getSelection();a.length!=0&&a.indexOf(this)<0&&this.unhighlight()},addEvents:function(a,b,c){Event.observe(this.pin.element,"mouseenter",this.mouseEnter.bind(this,a)),Event.observe(this.pin.element,"mouseout",this.mouseLeave.bind(this)),Event.observe(this.pin.element,"click",function(a){a.ctrlKey?c():b()})},remove:function(){this.pin&&(Event.stopObserving(this.pin.element),this.pin.remove(),this.pin=null)},setFlag:function(a){this.flags[a]=!0},setData:function(a,b,c,d){this.data[a]||(this.data[a]={}),this.data[a][b]||(this.data[a][b]={}),this.data[a][b][c]=d},hasData:function(a,b){return this.data[a]&&this.data[a][b]!==undefined},getData:function(a,b,c){return this.hasData(a,b)?this.data[a][b][c]:null}}),SeaMap.Port=Class.create(SeaMap.Poi,{draw:function($super,a,b){$super(a,b),Prototype.Browser.IE||(this.background=new Svgvml.Shapes.Rectangle(a),this.background.append(b),this.background.addClassName("portBackground")),this.hover=(new Svgvml.Shapes.Text(a,this.name)).setTextAnchor("middle"),this.hover.append(b),this.hover.addClassName("portname");if(this.background){var c=this.hover.getBBox(),d=6,e=c.width+d,f=c.height+d;this.background.setSize(e,f).setPosition(-e/2,-d/2+(Prototype.Browser.WebKit?3:1)),this.background.hide()}this.hover.height=this.hover.getBBox().height,this.hover.hide()},remove:function($super){$super(),this.hover&&(this.hover.remove(),this.background&&(this.background.remove(),this.background=null),this.hover=null)},applyTransform:function($super,a){$super(a),this.hover.applyTransform(a.multiply(Svgvml.Matrix2D.translate(0,-this.hover.height))),this.background&&this.background.applyTransform(a.multiply(Svgvml.Matrix2D.translate(0,-this.hover.height)))},mouseEnter:function($super,a,b){$super(a,b),this.hover.show(),this.background&&this.background.show()},mouseLeave:function($super){$super(),this.hover.hide(),this.background&&this.background.hide()},createPin:function(a){this.pin=(new Svgvml.Shapes.Circle(a)).addClassName("port").setPosition(0,0).setRadius(4)}}),SeaMap.Port.highlightedClass="portHighlighted",SeaMap.PortAggregate=Class.create(SeaMap.Poi,{createPin:function(a){this.pin=(new Svgvml.Shapes.Text(a,this.name)).setTextAnchor("middle").addClassName("aggregate")}}),SeaMap.PortAggregate.highlightedClass="aggregateHighlighted";var draganddrop=function(){function p(){i&&(clearTimeout(i),i=null),f=null,Event.stopObserving(c,"mouseup"),Event.stopObserving(c.ownerDocument,"mousemove"),e=null,d=null}function q(a){f=null,Event.stopObserving(c,"mouseup"),Event.stopObserving(c.ownerDocument,"mousemove"),k&&k(a)}function r(a){if(f==null)q();else{var b=Event.pointerX(a),c=Event.pointerY(a),d=b-f.x,g=c-f.y;o&&o(d,g,b-e.x,c-e.y),e={x:b,y:c}}Event.stop(a)}function s(b){f==null?(clearTimeout(i),i=null,g?(clearTimeout(h),h=null,g=!1,m&&m(b)):(g=!0,h=setTimeout(function(){h=null,g=!1,l&&l(b)},a))):q({x:Event.pointerX(b)-f.x,y:Event.pointerY(b)-f.y}),Event.stop(b)}function t(a){j&&j(),f=a,e=a,d={x:c.offsetLeft,y:c.offsetTop},Event.observe(c.ownerDocument,"mousemove",r)}function u(a){n&&n(a),f==null&&(Event.observe(c,"mouseup",s),i=setTimeout(function(){t({x:Event.pointerX(a),y:Event.pointerY(a)}),i=null},b)),Event.stop(a)}function v(a){Event.observe(c,"mousedown",u),p()}function w(a,b,d,e,f,g,h){c=a,o=b,l=d,m=e,j=f,k=g,n=h,v(!0)}var a=190,b=200,c,d,e=null,f=null,g=null,h=null,i=null,j=null,k=null,l=null,m=null,n=null,o=null;return{init:w,activate:v}}();SeaMap.MapWrapper=Class.create({initialize:function(a,b,c,d,e,f,g,h){this.name=a,this.extent=b,this.ratioX=g,this.ratioY=h,this.xmin=f.xmin,this.ymax=f.ymax,this.transformation=Svgvml.Matrix2D.translate(c-this.extent.xmin,d-this.extent.ymax).scaleAt(c,d,e,e),this.transformationinv=this.transformation.invert()},map2projection:function(a,b){var c=this.transform(a,b);return{x:(c.x-this.xmin)*this.ratioX,y:(this.ymax-c.y)*this.ratioY}},transform:function(a,b){return this.transformation.multiplyPoint({x:a,y:b})},transforminv:function(a,b){return this.transformationinv.multiplyPoint({x:a,y:b})},visibleExtent:function(){var a=this.transform(this.extent.xmin,this.extent.ymin),b=this.transform(this.extent.xmax,this.extent.ymax),c=SeaMap.Map.getVisibleExtent(),d=SeaMap.Utils.Intersection.rectangles({xmin:a.x,ymin:a.y,xmax:b.x,ymax:b.y},c);if(d){var a=this.transforminv(d.xmin,d.ymin),b=this.transforminv(d.xmax,d.ymax);return{xmin:a.x,ymin:a.y,xmax:b.x,ymax:b.y}}return null},isInside:function(a,b){return this.extent.xmin<=a&&a<=this.extent.xmax&&this.extent.ymin<=b&&b<=this.extent.ymax},isVisible:function(a,b){var c=this.transform(a,b),d=SeaMap.Map.getVisibleExtent();return c.x>=d.xmin&&c.x<=d.xmax&&c.y>=d.ymin&&c.y<=d.ymax}}),SeaMap.Map=function(){function H(a,b,c){return G.multiplyPoint(a.map2projection(b,c))}function I(a,b){var e=(a-m.xmin)*c/(m.xmax-m.xmin),f=(m.ymax-b)*d/(m.ymax-m.ymin);return{x:e,y:f}}function J(a){return a.mapWrapper.isVisible(a.x,a.y)}function K(){return p}function L(){return c}function M(){return d}function N(){return m}function O(){return D.filter(function(a){return a.visibleExtent()!=null})}function P(){return D}function Q(){return q}function R(){return v}function S(){v.empty()}function T(a,b,c){var d=B;B=SeaMap.dataManager.getPoisList(),B.each(function(e){if(e.level==a&&J(e)&&(b==null||e.hasData(b,c))){var f=function(a){SeaMap.updatePage(a,null,!1)},g=function(a){SeaMap.toggleInSingleSelection(a),f(a)},h=function(a){SeaMap.toggleInSelection(a),f(a)};e.build(q,w,f,g,h),d=d.reject(function(a){return a.code==e.code})}}),U(d)}function U(a){var b=a||SeaMap.dataManager.getPoisList();b.invoke("remove")}function V(a){var b=C.get(a);b&&b.invoke("setAttribute","class","active")}function W(a){a.setAttribute("class","inactive")}function X(a){var b=C.get(a);b&&b.invoke("setAttribute","class","passive")}function Y(a,b){var c;if(Prototype.Browser.IE)c=(new Async.DeferredRequest("activate map features")).call();else{var d=function(){a.features.each(b?V:X)};if(a.features)c=(new Async.DeferredRequest("activate map features")).call().addCallback(new Async.DeferredCallback(d));else if(a.level=="port")a.features=[a.region],c=(new Async.DeferredRequest("activate map features")).call().addCallback(new Async.DeferredCallback(d));else{var c=(new Async.AjaxRequest("webservices/webservices.php",{parameters:{ws:"mapFeatures",poiLevel:a.level,poi:a.code}},"map features")).call();c.addCallback(new Async.DeferredCallback(function(b){b.responseJSON.length==0?a.features=[a.region]:a.features=b.responseJSON,d()}))}}return c}function Z(a,b){if(Prototype.Browser.IE)return;var c=A.x.baseVal.value+a,d=z.viewBox.baseVal;z.setAttribute("viewBox",[c,d.y,d.width,d.height].join()),A.setAttribute("x",c)}function _(a){var b=null;typeof a!="boolean"||a?b=SeaMap.updatePois():b=(new Async.DeferredRequest("updateMap dummy")).call();if(Prototype.Browser.IE){var c=Svgvml.Matrix2D.multiply(F,G),d=$A(u.children);d.each(function(a){Svgvml.Vml.setTransform(a,c)}),w.applyTransform(F)}else Svgvml.Svg.setTransform(t,F),Svgvml.Svg.setTransform(u,G);return b}function ba(a,b){n+=a,o+=b;var e=-a*(m.xmax-m.xmin)/c,f=b*(m.ymax-m.ymin)/d;m.xmin+=e,m.xmax+=e,m.ymin+=f,m.ymax+=f,F=F.translate(a,b),Z(a,b)}function bb(a,b,e){var f=(m.xmax-m.xmin)/e,g=a*(m.xmax-m.xmin)/c+m.xmin;m.xmin=g-f*a/c,m.xmax=m.xmin+f;var h=(m.ymax-m.ymin)/e,i=m.ymax-b*(m.ymax-m.ymin)/d;m.ymax=i+h*b/d,m.ymin=m.ymax-h,G=Svgvml.Matrix2D.scaleAt(-n+a,-o+b,e,e).multiply(G)}function bc(a,b){var e=b?Event.pointerX(b):c/2,f=b?Event.pointerY(b):d/2;bb(e,f,a),SeaMap.dataManager.getPoisList().invoke("hide"),SeaMap.Map.emptyOverlay(),_(null)}function bd(a){if(p==b.maxZoomLevel)return;p++,bc(b.zoomFactor,a)}function be(a){if(p==0)return;p--,bc(l,a)}function bf(a,b,c){ba(a,b),_(c)}function bg(a,e,f){var g=Math.pow(b.zoomFactor,f-p);p=f;var h=I(a,e),a=(c+b.mapCenterTranslate.x)/2,e=(d+b.mapCenterTranslate.y)/2;return ba(a-h.x,e-h.y),bb(a,e,g),_(!0)}function bh(a){var c=Object.isString(a)?SeaMap.dataManager.getPoi(a):a;if(c){var d=b.zoomLevelToGeographicalLevel.lastIndexOf(c.level),e=c.mapWrapper.transform(c.x,c.y);return bg(e.x,e.y,d)}return(new Async.DeferredRequest("center dummy")).call()}function bi(){c=e,d=f,m=Object.clone(k),bl(!1),bf(0,0,!1)}function bj(){n=0,o=0,p=SeaMap.config.initialZoom,F=new Svgvml.Matrix2D,G=new Svgvml.Matrix2D,y=[],bi(),bb(c/2,d/2,Math.pow(b.zoomFactor,p)),bf((document.body.clientWidth-e)/2+b.initialTranslate.x,(document.body.clientHeight-f)/2+b.initialTranslate.y,!1),U()}function bk(a,b,e){var f=(a-c)/i,g=(b-d)/j;m.xmax+=f,m.ymin-=g,c=a,d=b,e&&(h&&clearTimeout(h),h=setTimeout(SeaMap.updatePois,1e3))}function bl(a){var b=document.body.clientWidth,c=document.body.clientHeight;g.style.width=b+"px",r.setAttribute("width",b),r.setAttribute("height",c);if(!Prototype.Browser.IE){s.setAttribute("width",b),s.setAttribute("height",c);var d=z.viewBox.baseVal;z.setAttribute("viewBox",[d.x,d.y,b,c].join()),A.setAttribute("width",b),A.setAttribute("height",c)}else t.childNodes[0].style.width=b+"px",t.childNodes[0].style.height=c+"px";bk(b,c,a)}function bm(){return y.pluck("id")}function bn(a){return y.find(function(b){return b.id==a})}function bo(a,b,c){var d=bn(a);d!=null&&(b=d.shape,y.splice(y.indexOf(d),1)),d=d||{id:a,shape:b};var e;c==null||y.length<=c?(y.push(d),e=null):(e=y[c].shape,y.splice(c,0,d)),b.insertBefore(x,e)}function bp(a,b,c,d,f,g){if(!bn(a)){var h=new Svgvml.Shapes.Image(q);h.setImage(b,c,d),h.setAttribute("pointer-events","none");var l=(f.xmax-f.xmin)/(k.xmax-k.xmin)*e/c;h.translate((f.xmin-k.xmin)*i,(k.ymax-f.ymax)*j).scale(l,l)}bo(a,h,g)}function bq(a,b,c,d,e,f){bp(a,b,c,d,e,f)}function br(a,b,c,d,e,f){bp(a,"data:image/png;base64,"+b,c,d,e,f)}function bs(a){var b=0;while(b<y.length&&y[b].id!=a)b++;b<y.length&&(y[b].shape.remove(),y.splice(b,1)[0])}function bt(){var a=new Svgvml.Shapes.Group(q);return a.append(v),a}function bu(){function l(a){var b=Event.wheel(a);b>0?bd(a):be(a),Event.stop(a)}function m(a,b,c,d){SeaMap.instance.map.draggingCallback(),bf(c,d,!1)}function n(){SeaMap.instance.map.startDraggingCallback()}function o(){SeaMap.instance.map.endDraggingCallback(),SeaMap.updatePois()}r=$("map");var a=SeaMap.config.maps["default"][0],c=a.extent;e=a.width,f=a.height;var d=a.mapWrappers;i=e/(c.xmax-c.xmin),k={xmin:c.xmin,ymin:(c.ymin+c.ymax)/2-f/2/i,xmax:c.xmax,ymax:(c.ymin+c.ymax)/2+f/2/i},j=f/(k.ymax-k.ymin),g=$("mapContainer");var h;Prototype.Browser.IE?(t=r.contentWindow.document.body.firstChild,q=Svgvml.create({container:t}),h=t,u=t.childNodes[1],w=g):(s=r.contentDocument.documentElement,z=s.childNodes[5],A=z.childNodes[1],t=s.childNodes[7],q=Svgvml.create({container:s}),h=s,u=t.childNodes[0],v=t.childNodes[1],w=t.childNodes[2]),v=new Svgvml.Shapes.Group(q,{node:v}),w=new Svgvml.Shapes.Group(q,{node:w}),bi(),E=new SeaMap.MapWrapper("main",k,k.xmin,k.ymax,1,k,i,j),D=[E],d&&(D=D.concat(d.map(function(a){return new SeaMap.MapWrapper(a.name,a.extent,a.x0,a.y0,a.zoom,k,i,j)}))),x=new Svgvml.Shapes.Group(q,{node:u.childNodes[0]}),$A(u.childNodes).each(function(a){if(a.nodeName=="path")if(a.id){var b=C.get(a.id);b?b.push(a):C.set(a.id,[a]),X(a.id)}else a.getAttribute("class")||W(a)}),$("zoom").observe("click",bd.curry(null)),$("unzoom").observe("click",be.curry(null)),$("top").observe("click",function(){bf(0,50)}),$("bottom").observe("click",function(){bf(0,-50)}),$("left").observe("click",function(){bf(50,0)}),$("right").observe("click",function(){bf(-50,0)}),$("controls").show(),Object.extend(Event,{wheel:function(a){var b=0;return a||(a=window.event),a.wheelDelta?b=a.wheelDelta/120:a.detail&&(b=-a.detail/3),Math.round(b)}});var p=function(a){SeaMap.instance.map.doubleClickCallback();var c=b.ids.get(a.findElement().id);c&&SeaMap.showPoi(c,!0)};/Firefox[\/\s](2\.\d+)/.test(navigator.userAgent)||(Prototype.Browser.Gecko?Event.observe(h,"DOMMouseScroll",l):Event.observe(h,"mousewheel",l),draganddrop.init(h,m,null,p,n,o)),SeaMap.instance.map.init(),SeaMap.addResizeObserver(bl.curry(!0)),Element.show.defer(r)}var a=SeaMap.constants,b=SeaMap.config,c,d,e,f,g,h=null,i,j,k,l=1/b.zoomFactor,m,n=0,o=0,p=0,q=null,r=null,s=null,t=null,u=null,v=null,w=null,x=null,y=[],z=null,A=null,B=$A(),C=$H(),D=null,E=null,F=new Svgvml.Matrix2D,G=new Svgvml.Matrix2D;return{init:bu,getZoomLevel:K,getWidth:L,getHeight:M,getVisibleExtent:N,getMapWrappers:P,getVisibleMapWrappers:O,getMapRenderer:Q,buildPois:T,removePois:U,center:bh,centerPositionZoom:bg,extent2Map:H,visibleExtent2Map:I,isVisible:J,initialState:bj,activateMapFeatures:Y,getLayers:bm,addLayer:bo,addLayerImageFile:bq,addLayerImageInline:br,removeLayer:bs,createSvgNode:bt,getOverlay:R,emptyOverlay:S}}();var Cookies=Class.create({initialize:function(a,b){this.path=a||"/",this.domain=b||null},set:function(a,b,c){if(typeof a!="string")throw"Invalid key";if(typeof b!="string"&&typeof b!="number")throw"Invalid value";if(c&&typeof c!="number")throw"Invalid expiration time";var d=a+"="+escape(new String(b));if(c){var e=new Date;e.setTime(e.getTime()+c*24*60*60*1e3);var f="; expires="+e.toGMTString()}else var f="";var g="; path="+escape(this.path),h=this.domain?"; domain="+escape(this.domain):"",i=d+f+g+h;document.cookie=i},clear:function(a){this.set(a,"",-1)},clearAll:function(){document.cookie.split(";").collect(function(a){return a.split("=").first().strip()}).each(function(a){this.clear(a)}.bind(this))}});Cookies.get=function(a){var b=a+"=",c=!1;return document.cookie.split(";").invoke("strip").each(function(a){if(a.startsWith(b))throw c=unescape(a.substring(b.length,a.length)),$break}),c},Object.extend(SeaMap,function(){function m(a){return b.getPage(a)}function n(a){return b.openPageId(a)}function o(a){SeaMap.config.langs.indexOf(a)!=-1&&(c=a)}function p(){return c}function q(a){l.indexOf(a)==-1&&l.push(a)}function r(){l.each(function(a){a()})}function s(a){document.location.search="?"+Object.toQueryString(Object.extend(decodeURIComponent(document.location.search).toQueryParams(),a))}function t(){return a.getSelection()}function u(b,c){var d=SeaMap.getSelection();b.call(a,c),SeaMap.instance.selectionUpdated(d)}function v(b){u(a.setSelection,b)}function w(b){u(a.toggleInSingleSelection,b)}function x(b){u(a.toggleInSelection,b)}function y(){return b.getCurrentPage()}function z(b){var c=[],d=a.getNames();return d&&SeaMap.config.levels.each(function(a){b[a]&&c.push(a=="country"?SeaMap.I18N.get("country_"+b[a]):d[b[a]])}),c.push(b.name),c.push("poi",b.code),c.map(function(a){return encodeURIComponent(a).replace("'","_")}).join("/")}function A(a,b){window.console&&console.log("history manager: "+a),B(b,!0,!0)}function B(b,c,d){var e;return g.hide(),b?(e=Object.isString(b)?a.poiIdentification(b):(new Async.DeferredRequest("showPoi")).call(b),e.addCallback(new Async.DeferredCallback(function(a){var b=(new Async.DeferredRequest).call(a),e=SeaMap.config.zoomLevelToGeographicalLevel[SeaMap.Map.getZoomLevel()],f=new Async.DeferredCallback(C.curry(a,null,d));return!a.pin||c&&(a.level!=e||!SeaMap.Map.isVisible(a))?(b.addCallback(new Async.DeferredCallback(function(a){return SeaMap.Map.removePois(),a})),b.addCallback(new Async.DeferredCallback(function(a){SeaMap.Map.center(a).addCallback(f)}))):(a.show(),b.addCallback(f)),b})),e):D()}function C(a,c,d){!SeaMap.config.noRsh&&!d&&dhtmlHistory.add(z(a),a.code),a=SeaMap.dataManager.getPoi(a.code),a.highlight();var e=y(),f=e&&(!c||e.id==c)?e.update(a):b.openPageId(c,a.code);return f.addCallback(new Async.DeferredCallback(SeaMap.instance.pageUpdated.curry(a))),f}function D(a){return SeaMap.Map.initialState(),SeaMap.instance.initialState(a),!SeaMap.config.noRsh&&!a&&dhtmlHistory.add(""),(new Async.DeferredRequest("initial state")).call()}function E(){return SeaMap.instance.updatePois()}function F(a,b){return SeaMap.instance.updateData(a,b)}function G(b){return F(a.getPoisList(),b)}function H(a){return F(t(),a)}function I(a,b){var c=function(){k=null,K(a),M()};return i.length==0&&(k=setTimeout(c,b?0:200)),j++,i.push(j),J.curry(j)}function J(a,b){var c=i.indexOf(a);c!=-1&&(i.splice(c,1),i.length==0&&(k&&(clearTimeout(k),k=null),N(),L()))}function K(a){SeaMap.instance.veilWillBeShown(f,a),f.show()}function L(){f.hide()}function M(){e.show()}function N(){e.hide()}function O(b){d=null;if(b.length<3)g.hide();else{var c=a.searchNames(b);g.show();if(c.length==0)h.update((new Element("div",{"class":"noResults"})).update(SeaMap.I18N.get("noResultsFound")));else{h.update();var e=a.getNames();e&&c.each(function(a){var c=new Element("div",{id:a}),d=new RegExp(b,"i"),f=e[a].split(d);f.each(function(a,d){a!=""&&c.insert(a),d!=f.length-1&&c.insert((new Element("span",{"class":"needle"})).update(b))}),h.insert(c)})}}}function P(a){var b=h.childElements(),c=function(a){d!=null&&b[d].removeClassName("highlighted"),d==null?a==1&&(d=0,g.show()):d+=a;var c=b[d];c.addClassName("highlighted");var e=$("resultsContainer");c.offsetTop+c.getHeight()-e.scrollTop>e.getHeight()?e.scrollTop+=e.getHeight()/2:c.offsetTop<=e.scrollTop&&(e.scrollTop-=e.getHeight()/2)};switch(a){case Event.KEY_UP:d!=null&&(d>0?c(-1):(b[d].removeClassName("highlighted"),d=null,g.hide()));break;case Event.KEY_DOWN:(d==null||d<b.length-1)&&c(1);break;case Event.KEY_RETURN:d!=null&&B(b[d].id,!0,!1);break;case Event.KEY_ESC:d!=null&&b[d].removeClassName("highlighted"),d=null,g.hide()}}function Q(){var a=PleaseUpgrade.check(SeaMap.config.allowedBrowsers,SeaMap.config.forbiddenBrowsers);if(a.status!=0&&!Cookies.get("wrongBrowser")){var b=I(!0);if(a.status!=3){var c=new Cookies;c.set("wrongBrowser","yes",5)}var d=new Element("div",{id:"browserCheck"});$(document.body).insert(d);var e=new Element("img",{src:"img/close.png"});d.insert(e);var f=new Element("div",{id:"warning"});d.insert(f),e.observe("click",function(){d.remove(),b()});var g=a.browser;SeaMap.I18N.update(f,SeaMap.I18N.get("warning"),null,{"class":"warning"}),a.status==3&&SeaMap.I18N.insert(f,SeaMap.I18N.get("forbiddenBrowser")),SeaMap.I18N.insert(f,SeaMap.I18N.get("fullAdvantage")+" ");if(a.status>=2){SeaMap.I18N.insert(f,SeaMap.I18N.get("pleaseUseRecentBrowser"));for(var h=0;h<a.allowedBrowsers.length;++h){var g=a.allowedBrowsers[h];a.allowedBrowsers.length>1&&f.insert(h==a.allowedBrowsers.length-1?"&nbsp;"+SeaMap.I18N.get("or")+"&nbsp;":h>0?", ":""),f.insert((new Element("a",{href:g.download})).update(g.identity))}}else a.status==1&&SeaMap.I18N.insert(f,SeaMap.I18N.get("pleaseUpdateYourBrowser"),{url:g.download,browser:g.identity,latestVersion:g.latestVersion,version:g.version});var i=d.getDimensions();d.setStyle({left:(document.body.scrollWidth-i.width)/2,top:(document.body.scrollHeight-i.height)/2})}return a.status<=2}function R(a){var b=a.inGroupsOf(2).map(function(a){var b=a[0],c=a[1];return b=="lang"&&c&&o(c),b=="pdf"&&c?new Async.DeferredCallback(SeaMap.Pdf.generatePdf.curry(c,"Data")):null}).flatten().compact();return b}function S(a){var b=[],c=a.indexOf("poi");return c!=-1&&a.length>c+1&&b.push(new Async.DeferredCallback(B.curry(a[c+1],!0))),b}function T(){var a=null,b=decodeURIComponent(document.location.search).replace("?","").split(/[&=]/).filter(Prototype.K);b.length!=0&&(a=R(b));if(!a||a.length==0){var c=decodeURIComponent(document.location.hash).replace("#","").split(/[&\/]/).filter(Prototype.K);c.length!=0&&(a=S(c))}return a==null||a.length==0?[new Async.DeferredCallback(D.curry(!0))]:a}function U(){var d=function(){document.title=SeaMap.I18N.get(SeaMap.config.title);var c=$("logo");SeaMap.config.logo?(c.src="img/"+SeaMap.config.logo,c.observe("click",D)):c.hide();var d=$("search");g=$("resultsContainer"),h=$("results"),d.placeholder=SeaMap.I18N.get("searchPlaceHolder"),d.observe("keyup",function(a){a.keyCode==Event.KEY_UP||a.keyCode==Event.KEY_DOWN||a.keyCode==Event.KEY_ESC||a.keyCode==Event.KEY_RETURN?P(a.keyCode):O(d.value)}),d.observe("focus",function(){O(d.value)}),h.observe("click",function(a){var b=Event.findElement(a,"div");B(b.id,!0,!1)}),e=$("loader"),f=$("veil");var j=function(){if(Q()){var c=SeaMap.instance.init();a=SeaMap.dataManager,c.addCallback(new Async.DeferredCallback(function(){b=SeaMap.pageManager,SeaMap.Map.init()})),SeaMap.config.noRsh||c.addCallback(new Async.DeferredCallback(function(){window.historyStorage.reset(),dhtmlHistory.initialize(),dhtmlHistory.addListener(A)})),Event.observe(window,"resize",r),c.addCallbacks(i)}};Svgvml.detect(j,"javascripts-1109191844/")};c=SeaMap.config.langs[0];var i=T();LazyLoad.js("resources-1109191844/"+c+".js",d)}var a=null,b=null,c,d=null,e,f,g,h,i=[],j=0,k,l=[];return{init:U,getPage:m,openPage:n,getCurrentPage:y,updatePois:E,updatePoisData:G,updateSelectedPoisData:H,showPoi:B,updatePage:C,getSelection:t,setSelection:v,toggleInSingleSelection:w,toggleInSelection:x,showWaiter:I,urlhash:z,getLang:p,reload:s,addResizeObserver:q,initialState:D}}())
