var tekt={};var eventFunctionNames=["onclick","onmouseover","onmouseout","onchange"];Object.addBehavior=function(obj,behavior){for(i in behavior){if(i!="_init"){if(eventFunctionNames.indexOf(i)==-1){obj[i]=behavior[i].bind(obj);}
else{Event.observe(obj,i.substring(2),behavior[i].bindAsEventListener(obj));}}}
if(behavior["_init"]){behavior["_init"].apply(obj);}}
function walkDOM(root,callback,data){if(root){var doTraverseChildren=callback(root,data);if(doTraverseChildren){var children=root.childNodes;for(var i=0;i<children.length;i++){walkDOM(children[i],callback,data);}}}}
if(!Array.prototype.indexOf){Array.prototype.indexOf=function(object){for(var i=0;i<this.length;i++)
if(this[i]==object)return i;return-1;}}
function cumulativeOffset(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];}
String.prototype.trim=function(){return this.replace(/^\s\s*/,'').replace(/\s\s*$/,'');}
Function.prototype.bind=function(object){var __method=this;return function(){return __method.apply(object,arguments);}}
Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event);}}
function $(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string')
element=document.getElementById(element);if(arguments.length==1)
return element;elements.push(element);}
return elements;}
function getQualifiedElements(tagName,className,parentElement){var children=($(parentElement)||document.body).getElementsByTagName(tagName||'*');if(!className)return children;var result=[];for(var i=0;i<children.length;i++){if(children[i].className.match(new RegExp("(^|\\s)"+className+"(\\s|$)"))){result.push(children[i]);}}
return result;}
function getFirstQualifiedElement(tagName,className,parentElement){var arr=getQualifiedElements(tagName,className,parentElement);if(arr&&arr.length>0)return arr[0];return null;}
function addClassName(el,className){if(!el.className){el.className=className;return;}
var classes=el.className.split(/\s+/);if(classes.indexOf(className)>-1)return;el.className=classes.concat(className).join(' ');}
function removeClassName(el,className){if(!el.className)return;var classes=el.className.split(/\s+/);var index=classes.indexOf(className);if(index==-1)return;classes.splice(index,1);el.className=classes.join(' ');}
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}
else var expires="";document.cookie=name+"="+value+expires+"; path=/";}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}
return null;}
function eraseCookie(name){createCookie(name,"",-1);}
var FieldNotifier={_init:function(){this.fieldListeners={};},addFieldListener:function(fieldName,listener){if(!this.fieldListeners[fieldName]){this.fieldListeners[fieldName]=[];}
if(this.fieldListeners[fieldName].indexOf(listener)==-1){this.fieldListeners[fieldName].push(listener);}},removeFieldListener:function(fieldName,listener){if(this.fieldListeners[fieldName]){this.fieldListeners[fieldName]=this.fieldListeners[fieldName].without(listener);}},notifyFieldListeners:function(fieldName){if(this.fieldListeners[fieldName]){for(var i=0,len=this.fieldListeners[fieldName].length;i<len;i++){this.fieldListeners[fieldName][i](this);}}},setAndNotify:function(fieldName,value){this[fieldName]=value;this.notifyFieldListeners(fieldName);}}
var EventNotifier={_init:function(){this.eventListeners={};},addEventListener:function(event,listener){if(!this.eventListeners[event]){this.eventListeners[event]=[];}
if(!this.eventListeners[event].include(listener)){this.eventListeners[event].push(listener);}},removeEventListener:function(event,listener){if(this.eventListeners[event]){this.eventListeners[event]=this.eventListeners[event].without(listener);}},notifyEventListeners:function(event,eventObj){if(this.eventListeners[event]){for(var i=0,len=this.eventListeners[event].length;i<len;i++){this.eventListeners[event][i](this,eventObj);}}}}
var Event={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},pointerX:function(event){return event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft));},pointerY:function(event){return event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop));},stop:function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation();}else{event.returnValue=false;event.cancelBubble=true;}},findElement:function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element;},observers:false,_observeAndCache:function(element,name,observer,useCapture){if(!this.observers)this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer);}},unloadCache:function(){if(!Event.observers)return;for(var i=0;i<Event.observers.length;i++){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i][0]=null;}
Event.observers=false;},observe:function(element,name,observer,useCapture){var element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';this._observeAndCache(element,name,observer,useCapture);},stopObserving:function(element,name,observer,useCapture){var element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element.detachEvent){element.detachEvent('on'+name,observer);}}};Event.observe(window,'unload',Event.unloadCache,false);var Tweener={looping:false,frameRate:60,objects:[],defaultOptions:{time:1,transition:'easeoutexpo',delay:0,prefix:{},suffix:{},onStart:undefined,onStartParams:undefined,onUpdate:undefined,onUpdateParams:undefined,onComplete:undefined,onCompleteParams:undefined},inited:false,easingFunctionsLowerCase:{},init:function(){this.inited=true;for(var key in Tweener.easingFunctions){this.easingFunctionsLowerCase[key.toLowerCase()]=Tweener.easingFunctions[key];}},toNumber:function(value,prefix,suffix){if(!suffix)suffix='px';return value.toString().match(/[0-9]/)?Number(value.toString().replace(new RegExp(suffix+'$'),'').replace(new RegExp('^'+(prefix?prefix:'')),'')):0;},addTween:function(obj,options){var self=this;if(!this.inited)this.init();var o={};o.target=obj;o.targetPropeties={};for(var key in this.defaultOptions){if(options[key]){o[key]=options[key];delete options[key];}else{o[key]=this.defaultOptions[key];}}
if(typeof o.transition=='function'){o.easing=o.transition;}else{o.easing=this.easingFunctionsLowerCase[o.transition.toLowerCase()];}
for(var key in options){if(!o.prefix[key])o.prefix[key]='';if(!o.suffix[key])o.suffix[key]='';var sB=this.toNumber(obj[key],o.prefix[key],o.suffix[key]);o.targetPropeties[key]={b:sB,c:options[key]-sB};}
setTimeout(function(){o.startTime=(new Date()-0);o.endTime=o.time*1000+o.startTime;if(typeof o.onStart=='function'){if(o.onStartParams){o.onStart.apply(o,o.onStartParams);}else{o.onStart();}}
self.objects.push(o);if(!self.looping){self.looping=true;self.eventLoop.call(self);}},o.delay*1000);return o;},removeTween:function(handle){var newObjects=[];for(var i=0;i<this.objects.length;i++){if(this.objects[i]!=handle)newObjects.push(this.objects[i]);}
this.objects=newObjects;},eventLoop:function(){var now=(new Date()-0);for(var i=0;i<this.objects.length;i++){var o=this.objects[i];var t=now-o.startTime;var d=o.endTime-o.startTime;if(t>=d){for(var property in o.targetPropeties){var tP=o.targetPropeties[property];try{o.target[property]=o.prefix[property]+(tP.b+tP.c)+o.suffix[property];}catch(e){}}
this.objects.splice(i,1);if(typeof o.onUpdate=='function'){if(o.onUpdateParams){o.onUpdate.apply(o,o.onUpdateParams);}else{o.onUpdate();}}
if(typeof o.onComplete=='function'){if(o.onCompleteParams){o.onComplete.apply(o,o.onCompleteParams);}else{o.onComplete();}}}else{for(var property in o.targetPropeties){var tP=o.targetPropeties[property];var val=o.easing(t,tP.b,tP.c,d);try{o.target[property]=o.prefix[property]+val+o.suffix[property];}catch(e){}}
if(typeof o.onUpdate=='function'){if(o.onUpdateParams){o.onUpdate.apply(o,o.onUpdateParams);}else{o.onUpdate();}}}}
if(this.objects.length>0){var self=this;setTimeout(function(){self.eventLoop()},1000/self.frameRate);}else{this.looping=false;}}};Tweener.Utils={bezier2:function(t,p0,p1,p2){return(1-t)*(1-t)*p0+2*t*(1-t)*p1+t*t*p2;},bezier3:function(t,p0,p1,p2,p3){return Math.pow(1-t,3)*p0+3*t*Math.pow(1-t,2)*p1+3*t*t*(1-t)*p2+t*t*t*p3;},allSetStyleProperties:function(element){var css;if(document.defaultView&&document.defaultView.getComputedStyle){css=document.defaultView.getComputedStyle(element,null);}else{css=element.currentStyle;}
for(var key in css){if(!key.match(/^\d+$/)){try{element.style[key]=css[key];}catch(e){};}}}};Tweener.easingFunctions={easeNone:function(t,b,c,d){return c*t/d+b;},easeOutQuad:function(t,b,c,d){return -c*(t/=d)*(t-2)+b;},easeInExpo:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b-c*0.001;},easeOutExpo:function(t,b,c,d){return(t==d)?b+c:c*1.001*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b-c*0.0005;return c/2*1.0005*(-Math.pow(2,-10*--t)+2)+b;},easeOutInExpo:function(t,b,c,d){if(t<d/2)return Tweener.easingFunctions.easeOutExpo(t*2,b,c/2,d);return Tweener.easingFunctions.easeInExpo((t*2)-d,b+c/2,c/2,d);}};Tweener.easingFunctions.linear=Tweener.easingFunctions.easeNone;var DEFAULT_MAP_CENTER=[30.7,17];var DEFAULT_MAP_LEVEL=3;var DEFAULT_MAP_TYPE=1;var DEFAULT_MAP_TYPE=G_PHYSICAL_MAP;var toneDiv=null;var pixelPos=[0,0];var map=null;function initMap(elementName,level,center,options){if(GBrowserIsCompatible()){if(!options)options={};var mapDiv=document.getElementById(elementName);if(!mapDiv)return;map=new GMap2(mapDiv);if(!center)center=new GLatLng(DEFAULT_MAP_CENTER[0],DEFAULT_MAP_CENTER[1]);if(!level)level=DEFAULT_MAP_LEVEL;map.setCenter(center,level);map.setMapType(options.mapType||DEFAULT_MAP_TYPE);map.enableContinuousZoom();GEvent.addListener(map,"moveend",mapMoved);if(options.color){setMapTone(options.color,options.opacity);}
pixelPos=cumulativeOffset(mapDiv);}}
function setMapTone(color,opacity){if(!toneDiv){toneDiv=document.createElement("DIV");toneDiv.style.position="absolute";toneDiv.style.top="-300px";toneDiv.style.left="-600px";toneDiv.style.width="1800px";toneDiv.style.height="900px";map.getPane(G_MAP_MAP_PANE).appendChild(toneDiv);}
toneDiv.style.backgroundColor=color;toneDiv.style.opacity=opacity;toneDiv.style.filter="alpha(opacity="+opacity*100+")";}
function fromEventToLatLng(event){var pos=[Event.pointerX(event),Event.pointerY(event)];return map.fromContainerPixelToLatLng({x:pos[0]-pixelPos[0],y:pos[1]-pixelPos[1]});}
function mapMoved(){if(toneDiv){var point=map.fromContainerPixelToLatLng(new GPoint(0,0));var offset=map.fromLatLngToDivPixel(point);toneDiv.style.left=(offset.x-600)+"px";toneDiv.style.top=(offset.y-300)+"px";}
var zoomLevel=map.getZoom();var center=map.getCenter();}
var dayColors=[["#000033",0.6],["#000033",0.6],["#000033",0.6],["#000033",0.5],["#000033",0.4],["#000033",0.3],["#330000",0.2],["#663300",0.2],["#333300",0.2],["#000033",0.0],["#ffffcc",0.1],["#ffffcc",0.2],["#ffffcc",0.3],["#ffffcc",0.3],["#ffffcc",0.2],["#ffffcc",0.1],["#aaaa00",0.0],["#bb9900",0.2],["#663300",0.2],["#660000",0.2],["#330000",0.3],["#000033",0.4],["#000033",0.5],["#000033",0.6],["#000033",0.6],];var startPos=[{center:new GLatLng(14.669585976321821,-17.432180643081665),zoomLevel:18},{center:new GLatLng(14.6769757713655,-17.4526780843735),zoomLevel:18},{center:new GLatLng(14.4395115840277,-17.0109343528748),zoomLevel:17}];var currentPage=0;var pages=[];var geopages=[];var mapInitialized=false;var arrow=null;var bookPart=1;var bookmarkPage=-1;var editMode=false;var bmTween=null;function init(part){bookPart=part;initPages();$("rightPage").onclick=nextPage;$("maskRight").onclick=nextPage;$("maskLeft").onclick=prevPage;$("backSide").onclick=closeBook;$("klappentext").onclick=function(event){prevPage();Event.stop(event);};if(window.location.hash){var pageNum=parseInt(window.location.hash.substring(1));if(pageNum)currentPage=pageNum-1;showBook();}
var bookmark=readCookie("bookmarkPage"+bookPart);if(bookmark){bookmarkPage=parseInt(bookmark);$("insideBookmark").style.left="426px";$("insideBookmark").style.cursor="pointer";$("coverBookmark").style.visibility="visible";}
$("outsideBookmark").style.left="-190px";$("outsideBookmark").onmouseover=function(){Tweener.removeTween(bmTween);bmTween=Tweener.addTween($("outsideBookmark").style,{left:-120,suffix:{left:"px"},time:0.5,onComplete:function(){$("bookmarkInfo").style.display="block";}});}
$("outsideBookmark").onmouseout=function(){$("bookmarkInfo").style.display="none";Tweener.removeTween(bmTween);bmTween=Tweener.addTween($("outsideBookmark").style,{left:-190,suffix:{left:"px"},time:0.5});}
var titleLinks=getQualifiedElements("a",null,$("titlePage"));for(var i=0;i<titleLinks.length;i++){Event.observe(titleLinks[i],"click",function(event){if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}});}
imagesToPreload.splice(0,0,"images/open"+bookPart+".jpg");preloadNext();}
var imagesToPreload=["images/mask_left.png","images/mask_right.png","images/eselsohr.png","images/bookmark1_inside.jpg","images/bookmark1_outside.jpg"];var preloadedImages=[];var preloadIndex=0;function preloadNext(){if(preloadIndex<imagesToPreload.length){var img=new Image();img.src=imagesToPreload[preloadIndex];preloadedImages.push(img);preloadIndex++;setTimeout(preloadNext,400);}}
function gotoBookmark(){if(bookmarkPage>0){gotoPage(bookmarkPage-1);}}
function activateBookmark(){if(bookmarkPage>0){currentPage=bookmarkPage-1;}}
function openBook(){$("bookCover").style.left="130px";Tweener.addTween($("bookCover").style,{left:531,suffix:{left:"px"},time:0.5,onComplete:showBook});}
function closeBook(){bookmarkPage=currentPage+1;leavePage(pages[currentPage])
$("outsideBookmark").style.display="none";$("insideBookmark").style.display="none";$("book").style.display="none";$("thisPageLink").style.visibility="hidden";$("thisPageLink").href="#";$("bookCover").style.display="block";$("bookCover").style.left="536px";setTimeout(function(){Tweener.addTween($("bookCover").style,{left:125,suffix:{left:"px"},time:1.5});},500);}
function showBook(){$("bookCover").style.display="none";$("book").style.display="block";if(bookmarkPage>-1){$("insideBookmark").style.display="block";}
else{$("outsideBookmark").style.display="block";}
$("thisPageLink").style.visibility="visible";if(!mapInitialized){var pos=startPos[bookPart-1];initMap("map",pos.zoomLevel,pos.center,{mapType:G_SATELLITE_MAP,color:"#ffffcc",opacity:0.1});mapInitialized=true;arrow=new Arrow(135,null);map.addOverlay(arrow);arrow.hide();if(editMode)enableEditing();}
setUpPage(pages[currentPage]);}
function initPages(){var el=$("rightPage").firstChild;while(el.nextSibling){if(el.className&&el.className.indexOf("pageContent")>-1){pages.push(el);}
el=el.nextSibling;}}
function nextPage(){if(currentPage<pages.length-1){leavePage(pages[currentPage]);currentPage++;setUpPage(pages[currentPage]);}}
function prevPage(){if(currentPage>0){leavePage(pages[currentPage]);currentPage--;setUpPage(pages[currentPage]);}
else{closeBook();}}
function gotoPage(num){if(pages[num]){leavePage(pages[currentPage])
currentPage=num;setUpPage(pages[currentPage]);}}
function leavePage(page){page.style.display="none";}
var delayedPos=null;var delayedZoomLevel=-1;function delayedPan(){if(delayedPos)map.panTo(delayedPos);delayedPos=null;}
function delayedZoom(){if(delayedZoomLevel>-1)map.setCenter(delayedPos,delayedZoomLevel);delayedZoomLevel=-1;delayedPos=null;}
function setUpPage(page){page.style.display="block";$("pages").style.left=(14+Math.round(36*currentPage/pages.length))+"px";$("pageNumber").innerHTML=2*currentPage+1;if(page.className.indexOf("blankPage")>-1){$("map").style.visibility="hidden";$("pageNumber").style.visibility="hidden";arrow.hide();}
else{if($("map").style.visibility!="visible")$("map").style.visibility="visible";if($("pageNumber").style.visibility!="visible")$("pageNumber").style.visibility="visible";}
if(bookmarkPage>0){if(bookmarkPage-1>currentPage){$("insideBookmark").style.display="block";$("outsideBookmark").style.display="none";$("insideBookmark").style.left="426px";}
else if(bookmarkPage-1<currentPage){$("insideBookmark").style.display="block";$("outsideBookmark").style.display="none";$("insideBookmark").style.left="130px";}
else{$("insideBookmark").style.display="none";$("outsideBookmark").style.display="block";}}
if(currentPage>0){createCookie("bookmarkPage"+bookPart,(currentPage+1),365);}
if(window.location.hash){window.location.hash="#";$("thisPageLinkText").innerHTML="";}
$("thisPageLink").href="#"+(currentPage+1);if(pageTracker){pageTracker._trackPageview("/part"+bookPart+"/page"+currentPage);}
var geo=parseGeoPage(page);if(!geo)return;if(editMode)updateDraMap(geo);if(geo){if(geo.hour){setMapTone(dayColors[geo.hour][0],dayColors[geo.hour][1]);}
if(geo.view){stopRoute();var zoomChanged=false;if(geo.view.center&&geo.view.zoomLevel){if(geo.view.zoomLevel!=map.getZoom()){zoomChanged=true;if(geo.noPan){map.setCenter(geo.view.center,geo.view.zoomLevel);}
else if(geo.panFirst){map.panTo(geo.view.center);delayedZoomLevel=geo.view.zoomLevel;delayedPos=new GLatLng(geo.view.center.lat(),geo.view.center.lng());setTimeout(delayedZoom,1000);}
else{map.setZoom(geo.view.zoomLevel);delayedPos=new GLatLng(geo.view.center.lat(),geo.view.center.lng());setTimeout(delayedPan,500);}}
else{if(geo.noPan){map.setCenter(geo.view.center);}
else{map.panTo(geo.view.center);}}}
else if(geo.view.center){if(geo.noPan){map.setCenter(geo.view.center);}
else{map.panTo(geo.view.center);}}
else if(geo.view.zoomLevel&&geo.view.zoomLevel!=map.getZoom()){zoomChanged=true;map.setZoom(geo.view.zoomLevel);}
if(geo.view.followPath){var route=geo.view.followPath;if(geo.view.speed)route.speed=geo.view.speed;var dist=0;route[0].dist=0;for(var i=1;i<route.length;i++){dist+=Math.sqrt((route[i][0]-route[i-1][0])*(route[i][0]-route[i-1][0])+(route[i][1]-route[i-1][1])*(route[i][1]-route[i-1][1]));route[i].dist=dist;}
currentRoute=route;if(zoomChanged){setTimeout(startRoute,1000);}
else{startRoute();}}}
if(geo.arrow){if(arrow.isVisible()){arrow.animate(geo.arrow.angle,geo.arrow.location);}
else{if(geo.arrow.angle!=null){arrow.setAngle(geo.arrow.angle);}
if(geo.arrow.location){arrow.setLocation(geo.arrow.location);}
else{arrow.setLocation(null);}
arrow.show();}}
else{arrow.hide();}}}
function startRoute(){routeStart=new Date().getTime();routeInterval=setInterval(followRoute,70);}
function parseGeoPage(page){var data={};var dateEl=getFirstQualifiedElement("span","dt",page);if(dateEl){var date=dateEl.innerHTML;data.date=date;data.hour=parseInt(date.substring(date.indexOf("T")+1,date.indexOf(":")));}
var arrow=getFirstQualifiedElement("div","arrow",page);if(arrow){data.arrow={};var angle=getFirstQualifiedElement("span","angle",arrow);if(angle){data.arrow.angle=parseInt(angle.innerHTML);}
var lat=getFirstQualifiedElement("span","lat",arrow);if(lat){lat=parseFloat(lat.innerHTML);}
var lng=getFirstQualifiedElement("span","lon",arrow);if(lng){lng=parseFloat(lng.innerHTML);}
if(lat&&lng){data.arrow.location=new GLatLng(lat,lng);}}
var view=getFirstQualifiedElement("div","view",page);if(view){data.view={};var flags=getFirstQualifiedElement("span","flags",view);if(flags){if(flags.innerHTML=="noPan")data.noPan=true;if(flags.innerHTML=="panFirst")data.panFirst=true;}
var zoomLevel=getFirstQualifiedElement("span","range",view);if(zoomLevel){data.view.zoomLevel=parseInt(zoomLevel.innerHTML);}
var route=getFirstQualifiedElement("span","route",view);if(route){route=route.innerHTML;route=route.split(";");var dist=0;for(var i=0;i<route.length;i++){route[i]=route[i].split(",");route[i][0]=parseFloat(route[i][0]);route[i][1]=parseFloat(route[i][1]);}
data.view.followPath=route;var speed=getFirstQualifiedElement("span","speed",view);if(speed){data.view.speed=parseFloat(speed.innerHTML);}}
else{var lat=getFirstQualifiedElement("span","lat",view);if(lat){lat=parseFloat(lat.innerHTML);}
var lng=getFirstQualifiedElement("span","lon",view);if(lng){lng=parseFloat(lng.innerHTML);}
if(lat&&lng){data.view.center=new GLatLng(lat,lng);}}}
return data;}
var currentGeo=null;var routeInterval=null;var currentRoute=null;var routeStart=null;var lastCP=0;function followRoute(){if(currentRoute){var now=new Date().getTime();var elapsed=(now-routeStart)/1000;var speed=1;if(map.getZoom()<17){speed=Math.pow(2,17-map.getZoom());}
if(currentRoute.speed)speed*=currentRoute.speed;var dist=elapsed/1000*speed;for(var i=lastCP+1;i<currentRoute.length-1;i++){if(currentRoute[i].dist>dist)break;}
if(dist<=currentRoute[i].dist){var alpha=(dist-currentRoute[i-1].dist)/(currentRoute[i].dist-currentRoute[i-1].dist);var lat=currentRoute[i-1][0]*(1-alpha)+currentRoute[i][0]*alpha;var lng=currentRoute[i-1][1]*(1-alpha)+currentRoute[i][1]*alpha;map.panTo(new GLatLng(lat,lng));lastCP=i-1;}
else{stopRoute();}}
else{stopRoute();}}
function stopRoute(){if(routeInterval!=null){clearInterval(routeInterval);routeInterval=null;if(currentRoute){map.panTo(new GLatLng(currentRoute[currentRoute.length-1][0],currentRoute[currentRoute.length-1][1]));}
currentRoute=null;lastCP=0;}}
function Arrow(angle,location){this.angle=angle;this.location=location;Object.addBehavior(this,FieldNotifier);};Arrow.baseDir="arrow";Arrow.size="64";
Arrow.isIE6=false /*@cc_on || @_jscript_version < 5.7 @*/;
Arrow.prototype=new GOverlay();Arrow.prototype.initialize=function(map){this.view=document.createElement("img");this.container=map.getContainer();this.view.style.position="absolute";this.view.style.marginTop="-"+(Arrow.size/2)+"px";this.view.style.marginLeft="-"+(Arrow.size/2)+"px";this.view.style.top="50%";this.view.style.left="50%";this.view.style.width=Arrow.size+"px";this.view.style.height=Arrow.size+"px";this.view.width=Arrow.size;this.view.height=Arrow.size;if(Arrow.isIE6){this.view.src=Arrow.baseDir+"/blank.gif";}
this.view.style.visibility="hidden";this.setAngle(315);this.view.onmousedown=this.onmousedown.bindAsEventListener(this);if(this.location){map.getPane(G_MAP_MAP_PANE).appendChild(this.view);}
else{this.container.appendChild(this.view);}
this.map=map;}
Arrow.prototype.remove=function(){this.view.parentNode.removeChild(this.view);}
Arrow.prototype.copy=function(){return new Arrow();}
Arrow.prototype.redraw=function(force){if(!force)return;if(this.location){var point=this.map.fromLatLngToDivPixel(this.location);this.view.style.left=point.x+"px";this.view.style.top=point.y+"px";}}
Arrow.prototype.show=function(){this.view.style.visibility="visible";}
Arrow.prototype.hide=function(){this.view.style.visibility="hidden";}
Arrow.prototype.isVisible=function(){return this.view.style.visibility=="visible";}
Arrow.prototype.setAngle=function(angle){angle=Math.round(angle/5)*5;while(angle>=360)angle-=360;while(angle<0)angle+=360;this.angle=angle;if(Arrow.isIE6){this.view.style.visibility="visible";this.view.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+Arrow.baseDir+"/arrow"+angle+".png', sizingMethod='image')";}
else{this.view.src=Arrow.baseDir+"/arrow"+angle+".png";}}
Arrow.prototype.setLocation=function(location){this.location=location;this.remove();if(this.location){this.map.getPane(G_MAP_MAP_PANE).appendChild(this.view);this.redraw(true);}
else{this.view.style.top="50%";this.view.style.left="50%";this.container.appendChild(this.view);}}
Arrow.prototype.animate=function(newAngle,newLocation){if(this.animTimer)clearInterval(this.animTimer);var doAnim=false;if(newAngle!=null){var dir=1;if((newAngle>this.angle&&newAngle-this.angle>180)||(newAngle<this.angle&&this.angle-newAngle<180)){dir=-1;}
var dist=Math.abs(newAngle-this.angle);if(dist>180)dist-=180;this.animFrom=this.angle;this.animDir=dir;this.animDist=dist;this.animStart=new Date().getTime();doAnim=true;}
if(newLocation){if(this.location==null){this.setLocation(this.map.getCenter());}
var pos=this.map.fromLatLngToDivPixel(newLocation);Tweener.addTween(this.view.style,{top:pos.y,left:pos.x,suffix:{left:"px",top:"px"},time:0.5,transition:"easeOutQuad"});}
else{if(this.location!=null){var pos=this.map.fromLatLngToDivPixel(this.map.getCenter());Tweener.addTween(this.view.style,{top:pos.y,left:pos.x,suffix:{left:"px",top:"px"},time:0.5,transition:"easeOutQuad",onComplete:function(){this.setLocation(null)}.bind(this)});}}
if(doAnim)this.animTimer=setInterval(this.animateArrow.bind(this),100);}
Arrow.prototype.animateArrow=function(){var now=new Date().getTime();var i=Math.round((now-this.animStart)/10);var val=5*i;if(val<this.animDist){this.setAngle(this.animFrom+this.animDir*val);}
else{clearInterval(this.animTimer);this.animTimer=null;this.setAngle(this.animFrom+this.animDir*this.animDist);}}
Arrow.prototype.onmousedown=function(event){Event.stop(event);if(!this.location){this.setLocation(this.map.getCenter());}
if(!this._ondrag)this._ondrag=this.ondrag.bindAsEventListener(this);if(!this._onmouseup)this._onmouseup=this.onmouseup.bindAsEventListener(this);this.dragOffset=[this.view.offsetLeft,this.view.offsetTop];this.dragStart=[Event.pointerX(event),Event.pointerY(event)];Event.observe(document.body,"mouseup",this._onmouseup);Event.observe(document.body,"mousemove",this._ondrag);}
Arrow.prototype.ondrag=function(event){Event.stop(event);var offset=[Event.pointerX(event)-this.dragStart[0],Event.pointerY(event)-this.dragStart[1]];this.view.style.left=(offset[0]+this.dragOffset[0]+(Arrow.size/2))+"px";this.view.style.top=(offset[1]+this.dragOffset[1]+(Arrow.size/2))+"px";}
Arrow.prototype.onmouseup=function(event){Event.stop(event);var point=new GPoint(this.view.offsetLeft+(Arrow.size/2),this.view.offsetTop+(Arrow.size/2));this.setLocation(this.map.fromDivPixelToLatLng(point));this.notifyFieldListeners("location");Event.stopObserving(document.body,"mouseup",this._onmouseup);Event.stopObserving(document.body,"mousemove",this._ondrag);}
var preloadAngle=0;while(preloadAngle<360){imagesToPreload.push(Arrow.baseDir+"/arrow"+preloadAngle+".png");preloadAngle+=5;}