if(!KLERO)var KLERO={};KLERO.UTIL={};
KLERO.UTIL.geocode=function(c,a,b){jQuery.ajax({type:"GET",url:"geocode/",data:{key:c,maxresults:a},dataType:"json",timeout:1E4,cache:!1,success:new function(a,b){return function(a){if(a===null||a.status!=0)b(null);else{var a=a.data.locations,e=[],f;for(f in a){var c=a[f];e[f]=new RouteLocation(c.x,c.y);e[f].setName(c.name);e[f].setCity(c.city);c.category=="poi"?e[f].setCategory(RouteLocation.CATEGORY_POI):c.category=="street"?e[f].setCategory(RouteLocation.CATEGORY_STREET):c.category=="address"&&
(e[f].setCategory(RouteLocation.CATEGORY_ADDRESS),e[f].setNumber(c.number))}b(e)}}}(c,b),error:function(){b(null)}})};
KLERO.UTIL.reverseGeocode=function(c,a,b){jQuery.ajax({type:"GET",url:"reversegeocode/",data:{x:Math.round(c),y:Math.round(a),radius:200},dataType:"json",timeout:1E4,cache:!1,success:new function(a,b,c){return function(e){var k=new RouteLocation(a,b);k.setCategory(RouteLocation.CATEGORY_POINT);if(!(e===null||e.status!=0))e=e.data,e.locations.length<1||(e=e.locations[0],k.setCategory(RouteLocation.CATEGORY_STREET),k.setName(e.name),k.setCity(e.city),e.number!==null&&e.number>0&&(k.setCategory(RouteLocation.CATEGORY_ADDRESS),
k.setNumber(e.number)));c(k)}}(c,a,b),error:function(){var f=new RouteLocation(c,a);f.setCategory(RouteLocation.CATEGORY_POINT);b(f)}})};
KLERO.UTIL.getRoute=function(c,a,b){for(var f=c[0],g=c[c.length-1],h=[],e=1;e<c.length-1;e++)h.push("location**"+Math.round(c[e].getX())+"*"+Math.round(c[e].getY()));a={profile:a,from:"location**"+Math.round(f.getX())+"*"+Math.round(f.getY()),to:"location**"+Math.round(g.getX())+"*"+Math.round(g.getY())};if(h.length>0)a.via=h;jQuery.ajax({type:"get",url:"getroute/",data:a,dataType:"json",timeout:3E4,cache:!1,success:new function(a,b){return function(e){if(e===null||e.status!=0)b(null);else{for(var m=
e.data.route,e=new Route(a,m.length),m=m.path.arcs,f=[],c=0;c<m.length;c++){for(var d=m[c].type,n=new Route.Arc(m[c].length,m[c].name),l=[],g=m[c].points,h=0;h<g.length;h++)l.push({x:g[h].x,y:g[h].y});n.setType(d);n.setPath(l);f.push(n)}e.setArcs(f);b(e)}}}(c,b),error:function(){b(null)}})};KLERO.UTIL.getArcStyleByType=function(c){var a=Settings.PathStyles,b;for(b in a){var f=a[b],g=f.kleroTypes;if(g.length>0)for(var h in g){if(g[h]===c)return f}else return f}return null};
var Settings={MaxVias:10,LayerOpacities:{map:0.5,contour:0.7,contourcolor:0.7,hillshade:1},Map:{placeHolderId:"MapArea",initialCenter:{x:2549164,y:6683186},initialZoom:8,minX:2515998,maxX:2570198,minY:6650001,maxY:6705001,minZoom:0,maxZoom:9,scales:{0:0.5,1:1.125,2:2.5,3:3.125,4:4,5:6.25,6:12.5,7:20,8:66.66,9:133},dimensions:{minWidth:300,minHeight:300,maxWidth:3E3,maxHeight:3E3,marginRight:40,marginBottom:20}},SearchResultFrame:{visible:{toggled:"SearchResultFrameOpen",unToggled:"SearchResultFrameClosed"},
invisible:"SearchResultFrameInvisible"},PoiCategoryList:{visible:{toggled:"PoiCategoryListToggled",unToggled:"PoiCategoryListUnToggled"},invisible:"PoiCategoryListInvisible"},RoiCategoryList:{visible:{toggled:"RoiCategoryListToggled",unToggled:"RoiCategoryListUnToggled"},invisible:"RoiCategoryListInvisible"},InputField:{enabled:"InputField",validating:"InputFieldValidating",valid:"InputFieldValid",invalid:"InputFieldInvalid",disabled:"InputField",invisible:"InputField"},EnergyConsumptionInfoButton:{enabled:{noMouse:"InfoButton",
mouseOver:"InfoButtonMouseOver",mouseDown:"InfoButtonMouseDown"},disabled:"InfoButtonDisabled",invisible:"InfoButtonInvisible"},EnergyConsumptionInfoFrame:{visible:"EnergyConsumptionInfoFrame",invisible:"EnergyConsumptionInfoFrameInvisible"},mainTabs:{tab:{style:{enabled:{selected:"MainTabSelected",unSelected:{noMouse:"MainTab",mouseOver:"MainTabMouseOver",mouseDown:"MainTab"}},disabled:{selected:"MainTabSelected",unSelected:"MainTab"},invisible:""}}},EmailLinkButton:{enabled:{noMouse:"EmailLinkButtonEnabled",
mouseOver:"EmailLinkButtonEnabledMouseOver",mouseDown:"EmailLinkButtonEnabledMouseDown"},disabled:"EmailLinkButtonDisabled",invisible:"EmailLinkButtonInvisible"},suggestionList:{item:{style:{enabled:{noMouse:"Suggestion",mouseOver:"SuggestionMouseOver",mouseDown:"Suggestion"},selected:{noMouse:"SuggestionSelected",mouseOver:"SuggestionSelected",mouseDown:"SuggestionSelected"},disabled:{noMoouse:"",mouseOver:"",mouseDown:""},invisible:{noMouse:"",mouseOver:"",mouseDown:""}}},ScrollUpButton:{scrollDelay:100,
style:{enabled:{noMouse:"ScrollUpButtonEnabled",mouseOver:"ScrollUpButtonEnabledMouseOver",mouseDown:"ScrollUpButtonEnabledMouseDown"},disabled:"ScrollUpButtonDisabled",invisible:"ScrollButtonInvisible"}},ScrollDownButton:{scrollDelay:100,style:{enabled:{noMouse:"ScrollDownButtonEnabled",mouseOver:"ScrollDownButtonEnabledMouseOver",mouseDown:"ScrollDownButtonEnabledMouseDown"},disabled:"ScrollDownButtonDisabled",invisible:"ScrollButtonInvisible"}}},SearchButton:{enabled:{noMouse:"SearchButtonEnabled",
mouseOver:"SearchButtonEnabledMouseOver",mouseDown:"SearchButtonEnabledMouseDown"},disabled:"SearchButtonDisabled",invisible:"SearchButtonInvisible"},searchResultFrame:{defaultCycleSpeed:17,defaultWalkSpeed:5,MapLocationLink:{enabled:{noMouse:"MapLocationLink",mouseOver:"MapLocationLinkMouseOver",mouseDown:"MapLocationLinkMouseDown"},disabled:"MapLocationLinkDisabled",invisible:"MapLocationLinkInvisible"}},poiFrame:{categoryItem:{style:{enabled:{selected:{noMouse:"PoiCategorySelected",mouseOver:"PoiCategorySelectedMouseOver",
mouseDown:"PoiCategorySelected"},partiallySelected:{noMouse:"PoiCategoryPartiallySelected",mouseOver:"PoiCategoryPartiallySelectedMouseOver",mouseDown:"PoiCategoryPartiallySelected"},notSelected:{noMouse:"PoiCategory",mouseOver:"PoiCategoryMouseOver",mouseDown:"PoiCategory"}},disabled:{selected:{noMouse:"",mouseOver:"",mouseDown:""},partiallySelected:{noMouse:"",mouseOver:"",mouseDown:""},notSelected:{noMouse:"",mouseOver:"",mouseDown:""}},invisible:{selected:{noMouse:"",mouseOver:"",mouseDown:""},
partiallySelected:{noMouse:"",mouseOver:"",mouseDown:""},notSelected:{noMouse:"",mouseOver:"",mouseDown:""}}}},categoryListItem:{style:{enabled:{noMouse:"PoiCategoryListItemOpen",mouseOver:"PoiCategoryListItemOpen",mouseDown:"PoiCategoryListItemOpen"},disabled:{noMouse:"",mouseOver:"",mouseDown:""},invisible:{noMouse:"PoiCategoryListItemInvisible",mouseOver:"PoiCategoryListItemInvisible",mouseDown:"PoiCategoryListItemInvisible"}}}},roiFrame:{categoryItem:{style:{enabled:{selected:{noMouse:"RoiCategorySelected",
mouseOver:"RoiCategorySelectedMouseOver",mouseDown:"RoiCategorySelected"},partiallySelected:{noMouse:"RoiCategoryPartiallySelected",mouseOver:"RoiCategoryPartiallySelectedMouseOver",mouseDown:"RoiCategoryPartiallySelected"},notSelected:{noMouse:"RoiCategory",mouseOver:"RoiCategoryMouseOver",mouseDown:"RoiCategory"}},disabled:{selected:{noMouse:"",mouseOver:"",mouseDown:""},partiallySelected:{noMouse:"",mouseOver:"",mouseDown:""},notSelected:{noMouse:"",mouseOver:"",mouseDown:""}},invisible:{selected:{noMouse:"",
mouseOver:"",mouseDown:""},partiallySelected:{noMouse:"",mouseOver:"",mouseDown:""},notSelected:{noMouse:"",mouseOver:"",mouseDown:""}}}},categoryListItem:{style:{enabled:{noMouse:"RoiCategoryListItemOpen",mouseOver:"RoiCategoryListItemOpen",mouseDown:"RoiCategoryListItemOpen"},disabled:{noMouse:"",mouseOver:"",mouseDown:""},invisible:{noMouse:"RoiCategoryListItemInvisible",mouseOver:"RoiCategoryListItemInvisible",mouseDown:"RoiCategoryListItemInvisible"}}}},PathStyles:{projectionStyle:{strokeColor:"#0099ff",
strokeOpacity:0.5,strokeWidth:7,kleroTypes:["",null]},cyclePathTarmacStyle:{strokeColor:"#ff0000",strokeOpacity:0.5,strokeWidth:7,kleroTypes:["6","7","10","11","15","18","21","23","24","25","26","27","28","44"]},cyclePathSandStyle:{strokeColor:"#d29664",strokeOpacity:0.5,strokeWidth:7,kleroTypes:["8","12","13","17","22","30","34"]},cyclePathUnknownStyle:{strokeColor:"#ffc800",strokeOpacity:0.5,strokeWidth:7,kleroTypes:["3","22","31","33","35","36","37","38","39","40","48"]},walkPathStyle:{strokeColor:"#ff00ff",
strokeOpacity:0.5,strokeWidth:7,kleroTypes:["20","29","41","42","49","50"]},streetStyle:{strokeColor:"#0000ff",strokeOpacity:0.5,strokeWidth:7,kleroTypes:["1","2","4","9","14","16","19","32","43","45","46","47"]},unknownTypeStyle:{strokeColor:"#000000",strokeOpacity:0.5,strokeWidth:7,kleroTypes:[]}},CrossingsStyle:{strokeColor:"#000000",fillOpacity:0.2,strokeOpacity:1,strokeWidth:1,tolerance:0.75,thinnerStrokeZoomlvl:4,earliestVisibleZoom:5,underpassToleranceInPixels:20,strokeDistanceLevels:{0:2,
1:5,2:9,3:10,4:15,5:20}}};function PoiCategory(c,a,b,f){this.getId=function(){return g};this.getNumber=function(){return h};this.setName=function(a){e=a};this.getName=function(){return e};this.setIconFilename=function(a){k=a};this.getIconFilename=function(){return k};this.setParentCategory=function(a){r=a};this.getParentCategory=function(){return r};this.addChildCategory=function(a){j.push(a);a.setParentCategory(this)};this.getChildCategories=function(){return j};var g=c,h=a,e=b,k=f,r=null,j=[]}
function PoiFrame(c,a){var b=jQuery,f=LBS.GUI;this.setPoiContent=function(d){for(var a in d)j.append(g(d[a],null))};this.addSelectionChangeCBF=function(a){d.push(a)};var g=function(d,a){var e=b("<div>"),c=b("<div>").addClass("Title").appendTo(e),o=b("<div>").addClass("Content").appendTo(e),i=b("<div>").addClass("ToggleButton").appendTo(e),s=new f.ToggleButton(i.get(0),f.Button.STATE.ENABLED,f.ToggleButton.TOGGLE_STATE.UNTOGGLED),y=new f.ToggleFrameStyleManager(Settings.PoiCategoryList),s=new f.ToggleFrame(e.get(0),
s,f.Frame.STATE.VISIBLE,f.ToggleFrame.TOGGLE_STATE.UNTOGGLED);y.addToggleFrame(s);d.getChildCategories().length<1&&i.hide();c=b("<div>").appendTo(c);i=b("<table>").appendTo(c);i=b("<tbody>").appendTo(i);i=b("<tr>").appendTo(i);y=b("<td>").appendTo(i);b("<img>").appendTo(y).attr("src",d.getIconFilename());y=b("<td>").appendTo(i);b("<div>").addClass("Label").appendTo(y).append(d.getName());c=new TreeNode(c.get(0),null,TreeNode.STATE.ENABLED,TreeNode.SELECTION_STATE_NOT_SELECTED);a!==null&&(c.setParent(a),
a.addChild(c));c.setData({poiCategory:d});c.addSelectionStateChangeCBF(h);m.addTreeNode(c);var i=d.getChildCategories(),j;for(j in i)o.append(g(i[j],c));return e},h=function(d){var a=!1;o===!0&&(a=!0,o=!1);var b=d.getData();d.getSelectionState()==TreeNode.SELECTION_STATE_NOT_SELECTED?(e(d,TreeNode.SELECTION_STATE_NOT_SELECTED),r(b.poiCategory)):d.getSelectionState()==TreeNode.SELECTION_STATE_SELECTED?(e(d,TreeNode.SELECTION_STATE_SELECTED),k(b.poiCategory)):d.getSelectionState();d=d.getParent();if(d!==
null){var b=d.getChildren(),c=!1,f=!1,i=!1,m;for(m in b){var g=b[m].getSelectionState();g==TreeNode.SELECTION_STATE_SELECTED?c=!0:g==TreeNode.SELECTION_STATE_NOT_SELECTED?i=!0:g==TreeNode.SELECTION_STATE_PARTIALLY_SELECTED&&(f=!0)}i==!1&&f==!1?d.setSelectionState(TreeNode.SELECTION_STATE_SELECTED):c==!1&&f==!1?d.setSelectionState(TreeNode.SELECTION_STATE_NOT_SELECTED):d.setSelectionState(TreeNode.SELECTION_STATE_PARTIALLY_SELECTED)}a==!0&&(s.redraw(),o=!0)},e=function(d,a){var b=d.getChildren(),e;
for(e in b)b[e].setSelectionState(a)},k=function(a){var b=a.getChildCategories();b.length<1&&s.addPoi(a.getNumber(),a.getName());for(var e in b)k(b[e]);for(e in d)d[e]()},r=function(a){var b=a.getChildCategories();b.length<1&&s.removePoi(a.getNumber());for(var e in b)r(b[e]);for(e in d)d[e]()},j=b(c),m=new TreeNode.StyleManager(Settings.poiFrame.categoryItem.style),o=!0,s=a,d=[]}
function Roi(c,a,b,f,g){this.getFilename=function(){return h};this.getWmsType=function(){return e};this.setBoundaryBox=function(a,d,b,e){k={minX:a,minY:d,maxX:b,maxY:e}};this.getBoundaryBox=function(){return k};this.getLineWidth=function(){return r};this.getLineColor=function(){return j};this.setName=function(a){m=a};this.getName=function(){return m};this.setCategory=function(a){o=a};this.getCategory=function(){return o};var h=c,e=a,k=b,r=f,j=g,m=null,o=null}
function RoiCategory(c,a){this.getId=function(){return b};this.setName=function(a){f=a};this.getName=function(){return f};this.setParentCategory=function(a){g=a};this.getParentCategory=function(){return g};this.addChildCategory=function(a){h.push(a);a.setParentCategory(this)};this.getChildCategories=function(){return h};this.addRoi=function(a){e.push(a);a.setCategory(this)};this.getRois=function(){return e};var b=c,f=a,g=null,h=[],e=[]}
function RoiFrame(c,a){var b=jQuery,f=LBS.GUI;this.setRoiContent=function(a){for(var d in a)j.append(g(a[d],null))};this.addSelectionChangeCBF=function(a){o.push(a)};var g=function(a,d){var e=b("<div>"),c=b("<div>").addClass("Title").appendTo(e),o=b("<div>").addClass("Content").appendTo(e),j=b("<div>").addClass("ToggleButton").appendTo(e),p=new f.ToggleButton(j.get(0),f.Button.STATE.ENABLED,f.ToggleButton.TOGGLE_STATE.UNTOGGLED),i=new f.ToggleFrameStyleManager(Settings.RoiCategoryList),p=new f.ToggleFrame(e.get(0),
p,f.Frame.STATE.VISIBLE,f.ToggleFrame.TOGGLE_STATE.UNTOGGLED);i.addToggleFrame(p);if(a.getChildCategories().length<1){j.hide();var k=a.getRois()[0].getLineColor(),k="#"+k.substring(0,6),y=a.getRois()[0].getLineWidth();y/=10}c=b("<div>").appendTo(c);j=b("<table>").appendTo(c);j=b("<tbody>").appendTo(j);j=b("<tr>").appendTo(j);i=b("<td>").appendTo(j);i=b("<div>").addClass("MapLegend").appendTo(i);a.getChildCategories().length<1&&(i.css("background-color",k),i.css("height",y+"px"));i=b("<td>").appendTo(j);
b("<div>").addClass("Label").appendTo(i).append(a.getName());k=new TreeNode(c.get(0),null,TreeNode.STATE.ENABLED,TreeNode.SELECTION_STATE_NOT_SELECTED);d!==null&&(k.setParent(d),d.addChild(k));k.setData({roiCategory:a});k.addSelectionStateChangeCBF(h);m.addTreeNode(k);var y=a.getChildCategories(),z;for(z in y)o.append(g(y[z],k));return e},h=function(a){var d=a.getData();a.getSelectionState()==TreeNode.SELECTION_STATE_NOT_SELECTED?(e(a,TreeNode.SELECTION_STATE_NOT_SELECTED),r(d.roiCategory)):a.getSelectionState()==
TreeNode.SELECTION_STATE_SELECTED?(e(a,TreeNode.SELECTION_STATE_SELECTED),k(d.roiCategory)):a.getSelectionState();a=a.getParent();if(a!==null){var d=a.getChildren(),b=!1,c=!1,f=!1,m;for(m in d){var g=d[m].getSelectionState();g==TreeNode.SELECTION_STATE_SELECTED?b=!0:g==TreeNode.SELECTION_STATE_NOT_SELECTED?f=!0:g==TreeNode.SELECTION_STATE_PARTIALLY_SELECTED&&(c=!0)}f==!1&&c==!1?a.setSelectionState(TreeNode.SELECTION_STATE_SELECTED):b==!1&&c==!1?a.setSelectionState(TreeNode.SELECTION_STATE_NOT_SELECTED):
a.setSelectionState(TreeNode.SELECTION_STATE_PARTIALLY_SELECTED)}},e=function(a,d){var b=a.getChildren(),e;for(e in b)b[e].setSelectionState(d)},k=function(a){var d=function(a){var b=a.getRois(),a=a.getChildCategories();if(a.length<1)for(var e in b)_roiLayer.addRoi(b[e].getFilename(),b[e].getWmsType(),b[e].getLineWidth(),b[e].getLineColor());for(var c in a)d(a[c])};d(a);_roiLayer.redraw();for(var b in o)o[b]()},r=function(a){var d=function(a){var b=a.getRois(),a=a.getChildCategories();if(a.length<
1)for(var e in b)_roiLayer.removeRoi(b[e].getFilename());for(var c in a)d(a[c])};d(a);_roiLayer.redraw();for(var b in o)o[b]()},j=b(c),m=new TreeNode.StyleManager(Settings.roiFrame.categoryItem.style);_roiLayer=a;var o=[]}
function Route(c,a){this.getLocations=function(){return b};this.getLength=function(){return f};this.getPath=function(){var a=[],b;for(b in g)a=a.concat(g[b].getPath());return a};this.setArcs=function(a){g=a;this.setBoundingBox(g)};this.getArcs=function(){return g};this.setBoundingBox=function(a){if(!(a===null||a.length==0)){h=new OpenLayers.Bounds;for(var b in a){var c=a[b].getPath(),f;for(f in c){var g=c[f];h.extend(new OpenLayers.LonLat(g.x,g.y))}}}};this.getBoundingBox=function(){if(h===null)return null;
return{minX:h.left,minY:h.bottom,maxX:h.right,maxY:h.top}};var b=c,f=a,g=null,h=null}Route.Arc=function(c,a){this.getName=function(){return f};this.getLength=function(){return b};this.setType=function(a){g=a};this.getType=function(){return g};this.setPath=function(a){h=a};this.getPath=function(){return h};var b=c,f=a,g=null,h=null};
function RouteLocation(c,a){this.getX=function(){return b};this.getY=function(){return f};this.setX=function(a){b=a};this.setY=function(a){f=a};this.setCategory=function(a){g=a};this.getCategory=function(){return g};this.setCity=function(a){h=a};this.getCity=function(){return h};this.setName=function(a){e=a};this.getName=function(){return e};this.setNumber=function(a){k=a};this.getNumber=function(){return k};var b=c,f=a,g=null,h=null,e=null,k=null}RouteLocation.CATEGORY_POI=1;
RouteLocation.CATEGORY_STREET=2;RouteLocation.CATEGORY_ADDRESS=3;RouteLocation.CATEGORY_POINT=4;
function RouteRequest(){this.setStartLocation=function(a){c=a};this.getStartLocation=function(){return c};this.setEndLocation=function(b){a=b};this.getEndLocation=function(){return a};this.setViaLocation=function(a,c){b[a]=c};this.setViaLocations=function(a){b=a};this.getViaLocations=function(){return b};this.setRoutingProfile=function(a){f=a};this.getRoutingProfile=function(){return f};var c=null,a=null,b=[],f=null}function RouteParameters(){}
function SelectionList(c,a,b,f,g){var h=LBS.GUI;this.getState=function(){return u.state};this.setState=function(a){var b;if(a==SelectionList.STATE_ENABLED)o.className=s,u.state=a;else if(a==SelectionList.STATE_DISABLED){o.className=d;for(b in F)F[b].setState(h.Button.STATE.DISABLED);for(b in y)y[b].setState(h.Button.STATE.DISABLED);u.state=a}else if(a==SelectionList.STATE_INVISIBLE){o.className=n;for(b in F)F[b].setState(h.Button.STATE.INVISIBLE);for(b in y)y[b].setState(h.Button.STATE.INVISIBLE);
u.state=a}};this.clear=function(){l=[];v=null;i=p=0;r()};this.addItem=function(a){l.push(a);i<u.size-1&&i++;r()};this.addArrayOfItems=function(a){for(var d in a)l.push(a[d]);i<u.size-1&&(i=l.length>u.size?u.size-1:l.length-1);r()};this.getLength=function(){return l.length};this.setSelectedIndex=function(a){a===null?v=null:a>=0&&a<l.length&&(v=a);r()};this.getSelectedIndex=function(){return v};this.getSelectedItem=function(){return v===null?null:l[v]};this.getItems=function(){return l};this.selectNextItem=
function(){if(v!==null&&v<l.length-1){v++;l[v-1].setState(SelectionList.Item.STATE_ENABLED);l[v].setState(SelectionList.Item.STATE_SELECTED);i<l.length-1&&v>p+u.selectNextScrollLimit&&m.scrollDown();for(var a in z)z[a](m)}return v};this.selectPreviousItem=function(){if(v!==null&&v!==0&&v>0){v--;l[v+1].setState(SelectionList.Item.STATE_ENABLED);l[v].setState(SelectionList.Item.STATE_SELECTED);p>0&&v<p+u.selectPreviousScrollLimit&&m.scrollUp();for(var a in z)z[a](m)}return v};this.scrollDown=function(){if(i<
l.length-1){i++;p++;for(var a=o.childNodes.length-1;a>=0;a--)o.replaceChild(l[a+p].getDomNode(),o.childNodes[a]);j()}};this.scrollUp=function(){if(p>0){i--;p--;for(var a=o.childNodes.length,d=0;d<a;d++)o.replaceChild(l[d+p].getDomNode(),o.childNodes[d]);j()}};this.addScrollUpButton=function(a,d){a.addMouseClickCBF(k);a.setState(h.Button.STATE.INVISIBLE);a.addMouseDownCBF(k,d);F.push(a)};this.addScrollDownButton=function(a,d){a.addMouseClickCBF(e);a.setState(h.Button.STATE.INVISIBLE);a.addMouseDownCBF(e,
d);y.push(a)};this.addSelectionChangeCBF=function(a){z.push(a)};var e=function(){v===null?m.setSelectedIndex(0):i>=l.length-1||m.scrollDown()},k=function(){v===null?m.setSelectedIndex(0):p<=0||m.scrollUp()},r=function(){for(var a=o.childNodes.length,d=a-1;d>=0;d--)o.removeChild(o.childNodes[d]),a--;for(var b=0,d=p;d<l.length&&d<=i;d++)v===null?l[d].setState(SelectionList.Item.STATE_ENABLED):d==v?l[d].setState(SelectionList.Item.STATE_SELECTED):l[d].setState(SelectionList.Item.STATE_ENABLED),b<a?(o.replaceChild(l[d].getDomNode(),
o.childNodes[b]),b++):o.appendChild(l[d].getDomNode());j()},j=function(){var a;if(l.length>u.size){for(a in F)p===null||p<=0?F[a].setState(h.Button.STATE.DISABLED):F[a].setState(h.Button.STATE.ENABLED);for(a in y)i>=l.length-1?y[a].setState(h.Button.STATE.DISABLED):y[a].setState(h.Button.STATE.ENABLED)}else{for(a in F)F[a].setState(h.Button.STATE.INVISIBLE);for(a in y)y[a].setState(h.Button.STATE.INVISIBLE)}},m=this,o=c,s=a,d=b,n=f,l=[],v=null,u=g,p=0,i=u.size-1,F=[],y=[],z=[];this.setState(u.state)}
SelectionList.STATE_ENABLED=1;SelectionList.STATE_DISABLED=2;SelectionList.STATE_INVISIBLE=3;SelectionList.parameters=function(c,a,b,f){this.size=c;this.selectNextScrollLimit=a<0?0:a>c-1?c-1:a;this.selectPreviousScrollLimit=b<0?0:b>c-1?c-1:b;this.state=f};
SelectionList.Item=function(c,a,b){LBS.GUI.GuiItem.call(this,c,a,b==SelectionList.Item.STATE_ENABLED||b==SelectionList.Item.STATE_SELECTED?!0:!1);this.getState=function(){return g};this.setState=function(a){a===SelectionList.Item.STATE_ENABLED||a==SelectionList.Item.STATE_SELECTED?h.enableEvents():h.disableEvents();if(g!==a){g=a;for(var b in f)f[b](h)}};this.addStateChangeCBF=function(a){f.push(a)};var f=[],g=b,h=this};SelectionList.Item.STATE_ENABLED=1;SelectionList.Item.STATE_SELECTED=2;
SelectionList.Item.STATE_DISABLED=3;SelectionList.Item.STATE_INVISIBLE=4;
SelectionList.Item.StyleManager=function(c){var a=LBS.GUI,b=[[SelectionList.Item.STATE_ENABLED,"enabled"],[SelectionList.Item.STATE_SELECTED,"selected"],[SelectionList.Item.STATE_DISABLED,"disabled"],[SelectionList.Item.STATE_INVISIBLE,"invisible"]],f=[[a.GuiItem.MOUSE_STATE.NO_MOUSE,"noMouse"],[a.GuiItem.MOUSE_STATE.MOUSE_OVER,"mouseOver"],[a.GuiItem.MOUSE_STATE.MOUSE_DOWN,"mouseDown"]],g=[],h;for(h in b){g[b[h][0]]=[];for(var e in f)g[b[h][0]][f[e][0]]=c[b[h][1]][f[e][1]]}a.GuiItemStyleManager.call(this,
g);this.addSelectionListItem=function(a){k(a);a.addStateChangeCBF(r.updateStyle)};var k=this.addGuiItem;this.addGuiItem=null;this.updateStyle=function(a){var b=a.getDomNode(),c=a.getState(),a=a.getMouseState();b.className=g[c][a]};var r=this};
function SearchArea(c,a,b,f,g,h){function e(a,d){var b=null;return function(a){if(b!==null){var c=OL_Map.getLayersByName("Vector")[0];c.removeFeatures(b);b=null}a!==null&&(b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.getX(),a.getY()),null,d),c=OL_Map.getLayersByName("Vector")[0],c.addFeatures(b),c.drawFeature(b));p()}}function k(a,d){var b=null;return function(a){a=a.getLocation();if(b!==null){var c=OL_Map.getLayersByName("Vector")[0];c.removeFeatures(b);b=null}a!==null&&(b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.getX(),
a.getY()),null,d),c=OL_Map.getLayersByName("Vector")[0],c.addFeatures(b),c.drawFeature(b));p()}}var r=jQuery,j=LBS.GUI;this.searchRoute=function(a){d.clear();l.setState(j.Button.STATE.DISABLED);var b="unknown",c=jQuery("#TransportTypeInputField").val(),e=jQuery("#RoutingMethodInputField").val();c==="walking"?e==="prefercyclepaths"?b="klerowalkweighted":e==="prefertarmac"?b="klerowalktarmac":e==="prefersand"?b="klerowalksand":e==="shortest"&&(b="klerowalkshortest"):e==="prefercyclepaths"?b="kleroweighted":
e==="prefertarmac"?b="klerotarmac":e==="prefersand"?b="klerosand":e==="shortest"&&(b="kleroshortest");n.setRoutingProfile(b);var c=n.getStartLocation(),e=n.getEndLocation(),i=n.getViaLocations();if(c!==null&&e!==null){var f=[];f[0]=c;for(var g=0,o=0;o<i.length;o++)i[o]!==null&&(g++,f[g]=i[o]);f[g+1]=e;v.setSearchingContent(c,e);u.clear();KLERO.UTIL.getRoute(f,b,new m(f,a))}l.setState(j.Button.STATE.ENABLED)};this.getRouteRequest=function(){return n};this.getRoute=function(){return i};this.addRouteChangeCBF=
function(a){s.push(a)};var m=function(a,b){return function(a){i=a;if(i!==null&&b){var c=i.getBoundingBox(),a=(c.minX+c.maxX)/2,e=(c.minY+c.maxY)/2,f=c.maxX-c.minX,c=c.maxY-c.minY,g=getMapDimensions(),m=g.width,g=g.height,n=OL_Map.getResolution();OL_Map.getZoomForResolution(n);m-=40;g-=40;for(var n=Settings.Map.scales,h=Settings.Map.maxZoom,l=0,l=Settings.Map.minZoom;l<=h;l++)if(f/n[l]<m&&c/n[l]<g)break;l>h&&(l=h);OL_Map.zoomTo(9-l);OL_Map.setCenter(new OpenLayers.LonLat(a,e))}d.drawRoute(i);v.setSearchResultContent(i);
u.drawProfile(o.getRouteRequest());for(var j in s)s[j]()}},o=this,s=[],d=h,n=new RouteRequest;n.setStartLocation(null);n.setEndLocation(null);c.addRouteLocationChangeCBF(new e(null,{pointRadius:0,externalGraphic:"css/img/markers/flag_start.png",graphicWidth:16,graphicHeight:19,graphicXOffset:-2,graphicYOffset:-18,graphicZIndex:5}));c.addRouteLocationChangeCBF(n.setStartLocation);a.addRouteLocationChangeCBF(new e(null,{pointRadius:0,externalGraphic:"css/img/markers/flag_end.png",graphicWidth:16,graphicHeight:19,
graphicXOffset:-2,graphicYOffset:-18,graphicZIndex:5}));a.addRouteLocationChangeCBF(n.setEndLocation);var l=new j.Button(r("#SearchButton").get(0),j.Button.STATE.DISABLED);(new j.ButtonStyleManager(Settings.SearchButton)).addButton(l);l.addMouseClickCBF(function(){o.searchRoute(!0)});for(var v=f,u=g,p=function(){var b=c.getRouteLocation(),d=a.getRouteLocation();b!==null&&d!==null?l.setState(j.Button.STATE.ENABLED):l.setState(j.Button.STATE.DISABLED)},i=null,f=0;f<b.length;f++)n.setViaLocation(f,b[f].getLocation()),
g=""+(f+1),g=new k(g,{pointRadius:0,externalGraphic:"css/img/markers/flag_via.png",graphicWidth:16,graphicHeight:19,graphicXOffset:-2,graphicYOffset:-18,graphicZIndex:5,label:g,fontSize:"8px",labelXOffset:6,labelYOffset:12}),g(b[f]),b[f].addLocationChangeCBF(g),b[f].addLocationChangeCBF(new function(a){return function(b){n.setViaLocation(a,b.getLocation())}}(f))}
function SearchFrame(c,a,b){var f=jQuery,g=LBS.GUI;this.getRouteLocation=function(){return v};this.setRouteLocation=function(a){if(a!==null){var b="";a.getCategory()==RouteLocation.CATEGORY_POINT&&a.getName()===null?b=Dictionary.Search.coordinates+" ["+Math.round(a.getX())+", "+Math.round(a.getY())+"]":(b=a.getName(),a.getNumber()!==null&&(b+=" ",b+=a.getNumber()),b+=", ",b+=a.getCity());d=b;s.setInput(b);l.setState(SelectionList.STATE_INVISIBLE);l.clear();h(a)}};this.setInput=function(a){s.setInput(a)};
this.setSuggestions=function(a){if(a.length<1)l.setState(SelectionList.STATE_INVISIBLE),v!==null&&h(null);else{l.clear();var b=[],d;for(d in a){label=a[d].getName();a[d].getCategory()==RouteLocation.CATEGORY_ADDRESS&&(label+=" ",label+=a[d].getNumber());label+=", ";label+=a[d].getCity();var c=f("<div>");c.append(label);c=new SelectionList.Item(c.get(0),a[d],SelectionList.Item.STATE_ENABLED);c.addMouseClickCBF(r);F.addSelectionListItem(c);b.push(c)}l.addArrayOfItems(b);l.setSelectedIndex(0);l.setState(SelectionList.STATE_ENABLED);
h(l.getSelectedItem().getData())}};this.addRouteLocationChangeCBF=function(a){u.push(a)};var h=function(a){var b=g.InputField.STATE;a===null?s.getInput().length>2?s.setState(b.INVALID):s.setState(b.ENABLED):s.setState(b.VALID);if(a!==v){v=a;for(var d in u)u[d](a)}},e=function(a){return function(b){n=!1;f.trim(s.getInput())==a?b===null||b.length<1?(o.setSuggestions([]),s.setState(g.InputField.STATE.INVALID)):(s.setState(g.InputField.STATE.VALID),o.setSuggestions(b)):k()}},k=function(){var a=f.trim(s.getInput());
a==d||n||(d=null,a.length<3?(h(null),o.setSuggestions([]),s.setState(g.InputField.STATE.ENABLED)):(KLERO.UTIL.geocode(a,100,new e(a)),n=!0,s.setState(g.InputField.STATE.VALIDATING)))},r=function(a){l.setState(SelectionList.STATE_INVISIBLE);o.setRouteLocation(a.getData())},j=function(){if(p.timer!==null)clearInterval(p.timer),p.timer=null},m=function(){if(i.timer!==null)clearInterval(i.timer),i.timer=null},o=this;c.autocomplete="off";c.value=b?b:"";var s=new g.InputField(c,g.InputField.STATE.ENABLED);
(new g.InputFieldStyleManager(Settings.InputField)).addInputField(s);var d=null,n=!1,l=a;l.setState(SelectionList.STATE_INVISIBLE);l.addSelectionChangeCBF(function(a){a=a.getSelectedItem();a!==null&&h(a.getData())});var v=null,u=[],p={CBF:l.selectNextItem,interval:100,timer:null},i={CBF:l.selectPreviousItem,interval:100,timer:null},F=new SelectionList.Item.StyleManager(Settings.suggestionList.item.style);s.addKeyReleaseCBF(m,null);s.addKeyReleaseCBF(j,null);s.addInputChangeCBF(k,500);s.addKeyPressCBF(function(){l.getSelectedIndex()===
null?(l.getState(),l.setState(SelectionList.STATE_INVISIBLE)):o.setRouteLocation(l.getSelectedItem().getData())},[13]);s.addKeyPressCBF(function(){if(l.getState()!=SelectionList.STATE_ENABLED)l.getLength()>0&&l.setState(SelectionList.STATE_ENABLED);else if(p.timer===null)l.selectNextItem(),p.timer===null&&(p.timer=setInterval(p.CBF,p.interval))},[40]);s.addKeyPressCBF(function(){if(l.getState()==SelectionList.STATE_ENABLED&&l.getSelectedIndex()!==null&&i.timer===null)l.selectPreviousItem(),i.timer===
null&&(i.timer=setInterval(i.CBF,i.interval))},[38]);s.addKeyPressCBF(function(a,b){b!=40&&j();b!=38&&m()},null);k()}
function SearchResultFrame(c){var a=jQuery,b=LBS.GUI;this.getRoute=function(){return r};this.setSearchingContent=function(c,m){if(c!==null&&m!==null){d.setState(b.Frame.STATE.VISIBLE);d.setToggleState(b.ToggleFrame.TOGGLE_STATE.TOGGLED);for(var o in e)e[o](k);g(Dictionary.SearchResultFrame.searchingRouteTitle);o=a("<div>");var j=a("<table>").appendTo(o),j=a("<tbody>").appendTo(j),p=a("<tr>").appendTo(j),i=a("<td>").appendTo(p);i.append(Dictionary.SearchResultFrame.searchingRouteFrom+":");i=a("<td>").appendTo(p);
i.append(h(c));p=a("<tr>").appendTo(j);i=a("<td>").appendTo(p);i.append(Dictionary.SearchResultFrame.searchingRouteTo+":");i=a("<td>").appendTo(p);i.append(h(m));a("<div>").addClass("AnimatedLogo").appendTo(o);f(o)}else f(null)};this.setSearchResultContent=function(d){var c=function(a){if(a.length<1)return!1;for(var b=!1,d=0;d<a.length;d++){if("0123456789".indexOf(a.charAt(d))==-1)return!1;if(a.charAt(d)=="."){if(b===!0)return!1;b=!0}}if(a.length==1&&b===!0)return!1;if(a*1===0)return!1;return!0},
e=function(a,b,d){var c="";for(x=0;x<a.length;x++)c+=a.charAt(x)==b?d:a.charAt(x);return c},m=function(a,b){durationInHours=a/b;hours=Math.floor(durationInHours);minutes=Math.round((durationInHours-hours)*60);var d="";hours>0&&(d+=hours+" "+Dictionary.SearchResultFrame.Duration.h+" ");d+=minutes+" "+Dictionary.SearchResultFrame.Duration.min;return d},o=function(a){return function(){OL_Map.panTo(new OpenLayers.LonLat(a.getX(),a.getY()))}};r=d;var i=null,j=null;if(r===null){g(Dictionary.SearchResultFrame.routeNotFoundTitle);
var k=a("<p>");k.append(Dictionary.SearchResultFrame.routeNotFoundInfo);f(k)}else{g(Dictionary.SearchResultFrame.searchResultTitle);var s=d.getLocations(),k=s[0],s=s[s.length-1],G=a("<table>"),B=a("<tbody>").appendTo(G),w=a("<tr>").appendTo(B),t=a("<td>").appendTo(w);t.append(Dictionary.SearchResultFrame.RouteLength.title);var A=d.getLength(),i=Math.round(A/100)/10+" "+Dictionary.SearchResultFrame.RouteLength.km,i=e(i,".",","),t=a("<td>").appendTo(w);t.append(i);w=a("<tr>").appendTo(B);t=a("<td>").appendTo(w);
t.append(Dictionary.SearchResultFrame.Speed.title);t=a("<td>").appendTo(w);i=a("<input>");i.attr("type","text");i.attr("size","2");i.attr("maxLength","2");var H=Settings.searchResultFrame.defaultCycleSpeed;jQuery("#TransportTypeInputField").val()==="walking"&&(H=Settings.searchResultFrame.defaultWalkSpeed);i.attr("value",H);t.append(i);t.append(" "+Dictionary.SearchResultFrame.Speed["km/h"]);w=a("<tr>").appendTo(B);t=a("<td>").appendTo(w);t.append(Dictionary.SearchResultFrame.Duration.title);durationString=
m(A/1E3,H);j=a("<td>").appendTo(w);j.append(durationString);w=a("<tr>").appendTo(B);t=a("<td>").appendTo(w);t.css("vertical-align","top");t.append(Dictionary.SearchResultFrame.searchResultRoute+":");t=a("<td>").appendTo(w);w=a("<div>").appendTo(t);w.append(h(k));A=new b.Button(w.get(0),b.Button.STATE.ENABLED);w=new b.ButtonStyleManager(Settings.searchResultFrame.MapLocationLink);w.addButton(A);A.addMouseClickCBF(new o(k));var A=d.getArcs(),P="",U=H=null,V=null,X=null,I=0,x;for(x in A){var C=A[x].getName();
C!=P&&I>100&&(P.length>0&&(I=a("<div>").appendTo(t),I.append(P),P=new b.Button(I.get(0),b.Button.STATE.ENABLED),w.addButton(P),P.addMouseClickCBF(new o(new RouteLocation((H*1+U*1)/2,(V*1+X*1)/2)))),P=C,I=0,X=V=U=H=null);I+=A[x].getLength();points=A[x].getPath();for(x in points){if(U===null||points[x].x>U)U=points[x].x;if(X===null||points[x].y>X)X=points[x].y;if(H===null||points[x].x<H)H=points[x].x;if(V===null||points[x].y<V)V=points[x].y}}t=a("<div>").appendTo(t);t.append(h(s));t=new b.Button(t.get(0),
b.Button.STATE.ENABLED);w.addButton(t);t.addMouseClickCBF(new o(s));w=a("<tr>").appendTo(B);o=a("<td>").addClass("EnergyConsumption").appendTo(w);o.css("vertical-align","top");o.attr("colspan","2");t=a("<div>").addClass("EnergyConsumptionTitle").appendTo(o);t.append(Dictionary.SearchResultFrame.EnergyConsumption.title);w=a("<div>").addClass("InfoButton").appendTo(t);B=new b.ButtonStyleManager(Settings.EnergyConsumptionInfoButton);w=new b.Button(w.get(0),b.Button.STATE.ENABLED);B.addButton(w);var q=
a("<div>").appendTo(t);q.attr("id","EnergyConsumptionIntoFramePlaceHolder");var t=new b.FrameStyleManager(Settings.EnergyConsumptionInfoFrame),L=new b.Frame(a("#EnergyConsumptionInfoFrame").get(0),b.Frame.STATE.INVISIBLE);t.addFrame(L);(new b.Button(a("#EnergyConsumptionInfoFrameCloseButton").get(0),b.Button.STATE.ENABLED)).addMouseClickCBF(function(){L.setState(b.Frame.STATE.INVISIBLE)});w.addMouseClickCBF(function(){if(L.getState()===b.Frame.STATE.INVISIBLE){var a=L.getDomNode();a.style.position=
"absolute";a.style.zIndex=255;a.style.top=q.offset().top+"px";a.style.left=q.offset().left+"px";L.setState(b.Frame.STATE.VISIBLE)}else L.setState(b.Frame.STATE.INVISIBLE)});t=a("<table>").appendTo(o);B=a("<tbody>").appendTo(t);w=a("<tr>").appendTo(B);t=a("<td>").addClass("LogoTd").appendTo(w);t.attr("rowspan","2");a("<div>").addClass("BikeLogo").appendTo(t);t=a("<td>").appendTo(w);A=d.getLength();w=0.025*A;A=Math.round(w)+" "+Dictionary.SearchResultFrame.EnergyConsumption.kcal;H=Math.round(4.1868*
w)+" "+Dictionary.SearchResultFrame.EnergyConsumption.kJ;t.append(H+" / "+A);A="= "+Math.round(w/52)+" "+Dictionary.SearchResultFrame.EnergyConsumption.piecesOfChocolate;w=a("<tr>").appendTo(B);t=a("<td>").appendTo(w);t.append(A);w=a("<tr>").appendTo(B);t=a("<td>").addClass("SpaceTd").appendTo(w);t.attr("colspan","2");w=a("<tr>").appendTo(B);t=a("<td>").addClass("LogoTd").appendTo(w);t.attr("rowspan","2");a("<div>").addClass("WalkLogo").appendTo(t);t=a("<td>").appendTo(w);A=d.getLength();w=0.05*A;
A=Math.round(w)+" "+Dictionary.SearchResultFrame.EnergyConsumption.kcal;H=Math.round(4.1868*w)+" "+Dictionary.SearchResultFrame.EnergyConsumption.kJ;t.append(H+" / "+A);A="= "+Math.round(w/52)+" "+Dictionary.SearchResultFrame.EnergyConsumption.piecesOfChocolate;w=a("<tr>").appendTo(B);t=a("<td>").appendTo(w);t.append(A);a("<div>").addClass("EnergyConsumptionCoInfo").appendTo(o).append(Dictionary.SearchResultFrame.EnergyConsumption.coInfo);d=a("<div>").addClass("EnergyConsumptionJourneyPlannerLink").appendTo(o);
d=a("<a>").appendTo(d);t=Dictionary.SearchResultFrame.EnergyConsumption.JourneyPlannerLink.urlPrefix+"?";t+="from=location*"+encodeURIComponent(h(k))+"*"+Math.round(k.getX())+"*"+Math.round(k.getY());t+="&to=location*"+encodeURIComponent(h(s))+"*"+Math.round(s.getX())+"*"+Math.round(s.getY());d.attr("href",t);d.attr("target","_blank");d.append(Dictionary.SearchResultFrame.EnergyConsumption.JourneyPlannerLink.name);i.keyup(function(){var b=r.getLength(),d=a(this).val(),d=e(d,",","."),i="-";c(d)===
!0&&(i=m(b/1E3,d));j.empty().append(i)});f(G)}};this.addStateChangeCBF=function(a){e.push(a)};var f=function(d){a(m).empty().append(d)},g=function(d){a(j).empty().append(d)},h=function(a){var d="";a.getCategory()==RouteLocation.CATEGORY_POINT&&a.getName()===null?d=Dictionary.SearchResultFrame.coordinates+" ["+Math.round(a.getX())+", "+Math.round(a.getY())+"]":(d=a.getName(),a.getNumber()!==null&&(d+=" ",d+=a.getNumber()),d+=", ",d+=a.getCity());return d},e=[],k=this,r=null,j=a("<div>").addClass("Title").appendTo(a(c)),
m=a("<div>").addClass("Content").appendTo(a(c)),o=new b.ToggleButton(j.get(0),b.Button.STATE.ENABLED,b.ToggleButton.TOGGLE_STATE.UNTOGGLED),s=new b.ToggleFrameStyleManager(Settings.SearchResultFrame),d=new b.ToggleFrame(c,o,b.Frame.STATE.INVISIBLE,b.ToggleFrame.TOGGLE_STATE.UNTOGGLED);s.addToggleFrame(d)}
function TreeNode(c,a,b,f){LBS.GUI.GuiItem.call(this,c,null,b==TreeNode.STATE.ENABLED?!0:!1);this.getState=function(){return g};this.setState=function(a){a===TreeNode.STATE.ENABLED?m.enableEvents():m.disableEvents();if(g!==a){g=a;for(var b in r)r[b](m)}};this.getSelectionState=function(){return h};this.setSelectionState=function(a){if(a!=h){h=a;for(var b in j)j[b](m)}};this.getParent=function(){return e};this.setParent=function(a){e=a};this.getChildren=function(){return k};this.addChild=function(a){k.push(a)};
this.addStateChangeCBF=function(a){r.push(a)};this.addSelectionStateChangeCBF=function(a){j.push(a)};var g=b,h=f,e=null,k=[],r=[],j=[],m=this;this.addMouseClickCBF(function(){h==TreeNode.SELECTION_STATE_NOT_SELECTED?m.setSelectionState(TreeNode.SELECTION_STATE_SELECTED):m.setSelectionState(TreeNode.SELECTION_STATE_NOT_SELECTED)})}TreeNode.STATE={ENABLED:1,DISABLED:2,INVISIBLE:3};TreeNode.SELECTION_STATE_SELECTED=1;TreeNode.SELECTION_STATE_PARTIALLY_SELECTED=2;
TreeNode.SELECTION_STATE_NOT_SELECTED=3;
TreeNode.StyleManager=function(c){var a=LBS.GUI,b=TreeNode.STATE,f=a.GuiItem.MOUSE_STATE,b=[[b.ENABLED,"enabled"],[b.DISABLED,"disabled"],[b.INVISIBLE,"invisible"]],g=[[TreeNode.SELECTION_STATE_SELECTED,"selected"],[TreeNode.SELECTION_STATE_PARTIALLY_SELECTED,"partiallySelected"],[TreeNode.SELECTION_STATE_NOT_SELECTED,"notSelected"]],f=[[f.NO_MOUSE,"noMouse"],[f.MOUSE_OVER,"mouseOver"],[f.MOUSE_DOWN,"mouseDown"]],h=[],e;for(e in b){h[b[e][0]]=[];for(var k in g){h[b[e][0]][g[k][0]]=[];for(var r in f)h[b[e][0]][g[k][0]][f[r][0]]=
c[b[e][1]][g[k][1]][f[r][1]]}}a.GuiItemStyleManager.call(this,h);this.addTreeNode=function(a){j(a);a.addStateChangeCBF(m.updateStyle);a.addSelectionStateChangeCBF(m.updateStyle)};var j=this.addGuiItem;this.addGuiItem=null;this.updateStyle=function(a){var b=a.getDomNode(),d=a.getState(),c=a.getSelectionState(),a=a.getMouseState();b.className=h[d][c][a]};var m=this};
function LocationManager(c){this.setLocation=function(c){b=c;for(var h in f)f[h](a)};this.getLocation=function(){return b};this.addLocationChangeCBF=function(a){f.push(a)};var a=this,b=c,f=[]}
function ElevationProfileFrame(c,a){var b=jQuery;this.drawProfile=function(a){for(var c=a.getStartLocation(),m=a.getEndLocation(),g=a.getViaLocations(),o=a.getRoutingProfile(),a=[],j=0;j<g.length;j++)g[j]!=null&&a.push("location**"+Math.round(g[j].getX())+"*"+Math.round(g[j].getY()));c={profile:o,from:"location**"+Math.round(c.getX())+"*"+Math.round(c.getY()),to:"location**"+Math.round(m.getX())+"*"+Math.round(m.getY())};if(a.length>0)c.via=a;b.ajax({type:"get",url:"getelevation/",data:c,dataType:"json",
timeout:1E4,cache:!1,success:function(a){if(!(a===null||a.status!=0))if(a=a.data,a===null||a.route===null)h.clear();else{d=a.route.length;l=n=null;v=0;for(var b=d/1E3,c=[],i=[],m=-1E3,g=-1E3,o=0;o<a.route.path.arcs.length;o++)for(var j=a.route.path.arcs[o],s=0;s<j.points.length;s++){var x=j.points[s];if(x.altitude!==null){if(x.altitude<n||n==null)n=x.altitude;if(x.altitude>l||l==null)l=x.altitude;x.altitude>m&&m>-1E3&&(v+=x.altitude-m);if(x.dist-g>b||x.altitude-m>1)c.push([x.dist,x.altitude]),i.push({x:x.x,
y:x.y}),g=x.dist,m=x.altitude}}e=c;k=i;b=[];if(a.route.path.arcs.length>0){j=a.route.path.arcs[0];c=j.color;for(o=m=i=0;o<a.route.path.arcs.length;o++){var j=a.route.path.arcs[o],g=j.length,p=j.color;p!==c&&(b.push({startDist:i,endDist:m,color:c}),c=p,i=m);m+=g}b.push({startDist:i,endDist:m,color:p})}r=b;f()}},error:function(){h.clear()}})};this.updateDimensions=function(a,d){o=a;s=d;f()};this.clear=function(){j.empty();j.hide();m.empty();m.hide();g();p=null;b("#TotalAscent").empty();b("#MaxAltitudeDifference").empty();
b("#TotalLength").empty()};var f=function(){j.show();m.show();j.empty();m.empty();if(e!==null){var a=Dictionary.ElevationProfile.TotalAscent.title;a+=' <span class="Value">';a+=v.toFixed(0);a+=" "+Dictionary.ElevationProfile.TotalAscent.m;a+="</span>";b("#TotalAscent").empty().append(a);a=Dictionary.ElevationProfile.MaxAltitudeDifference.title;a+=' <span class="Value">';a+=(l-n).toFixed(0);a+=" "+Dictionary.ElevationProfile.MaxAltitudeDifference.m;a+="</span>";b("#MaxAltitudeDifference").empty().append(a);
a=Dictionary.ElevationProfile.TotalLength.title;a+=' <span class="Value">';a+=(d/1E3).toFixed(1);a+=" "+Dictionary.ElevationProfile.TotalLength.km;a+="</span>";b("#TotalLength").empty().append(a);j.css({width:o+"px",height:s+"px"});var c=b.plot(j,[{color:"#da9378",data:e}],{series:{lines:{show:!0,lineWidth:2,fill:!0,fillColor:"#edf4f5"},points:{show:!1}},grid:{show:!0,color:"#000000",backgroundColor:"#ffffff",tickColor:"#ffffff",borderWidth:1,borderColor:"#ffffff",labelMargin:5,hoverable:!0,clickable:!0},
xaxis:{tickFormatter:function(a,d){return(a/1E3).toFixed(d.tickDecimals)+Dictionary.ElevationProfile.XAxis.km},tickDecimals:1},yaxis:{tickFormatter:function(a,d){return a.toFixed(d.tickDecimals)+Dictionary.ElevationProfile.YAxis.m}}}),f=null;j.bind("plothover",function(a,d,c){b("#x").text(d.x.toFixed(2));b("#y").text(d.y.toFixed(2));if(c){if(f!=c.datapoint){f=c.datapoint;b("#tooltip").remove();var a=(c.datapoint[0]/1E3).toFixed(1),d=c.datapoint[1].toFixed(0),e=c.pageX,c=c.pageY;b('<div id="tooltip">'+
(d+" "+Dictionary.ElevationProfile.YAxis.m+" ("+a+" "+Dictionary.ElevationProfile.XAxis.km+")")+"</div>").css({position:"absolute",display:"none",top:c+10,left:e+10,border:"1px solid #fdd",padding:"2px","background-color":"#fee",opacity:0.8}).appendTo("body").fadeIn(100)}}else b("#tooltip").remove(),f=null});j.bind("plotclick",function(a,d,b){if(b&&b.dataIndex>=0&&b.dataIndex<k.length)OL_Map.panTo(new OpenLayers.LonLat(k[b.dataIndex].x,k[b.dataIndex].y)),a=k[b.dataIndex].x,d=k[b.dataIndex].y,g(),
a>0&&d>0&&(u=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a,d),null,{pointRadius:0,externalGraphic:"css/img/markers/elevation_profile_map_marker.png",graphicWidth:29,graphicHeight:29,graphicXOffset:0,graphicYOffset:-29,graphicZIndex:4}),a=OL_Map.getLayersByName("MapMarkLayer")[0],a.addFeatures(u),a.drawFeature(u)),c.unhighlight(),c.highlight(0,b.dataIndex),p=b.dataIndex});c.unhighlight();p!==null&&c.highlight(0,p);a=b("<div>");a.css({position:"absolute",bottom:"20px",right:"15px",fontSize:"80%"});
a.append(Dictionary.ElevationProfile.Copyright);j.append(a);a=c.getPlotOffset();b("#MapLegend").css({marginLeft:a.left});var h=c.width();m.css({width:h+"px",marginTop:"5px",marginLeft:a.left+"px"});for(a=0;a<r.length;a++){var G=r[a],B=G.startDist,h=G.color,w=B/d*100,G=(G.endDist-B)/d*100;G<0.1&&(G=0.1);B=b("<div>");B.css({position:"absolute",top:"0",left:w+"%",height:"100%",width:G+"%",margin:"0px",padding:"0px",backgroundColor:h});m.append(B)}}},g=function(){u!==null&&OL_Map.getLayersByName("MapMarkLayer")[0].removeFeatures(u);
u=null},h=this,e=null,k=null,r=null,j=c,m=a,o=0,s=0,d=0,n=0,l=0,v=0,u=null,p=null;h.clear()}
function RouteLayer(c){this.drawRoute=function(b){var c=jQuery;h=b;r.destroyFeatures();j.destroyFeatures();if(b!==null){var e=null,d=null,n=[],l=null,k=null,b=b.getArcs(),u;for(u in b){var p=b[u],l=p.getType(),e=KLERO.UTIL.getArcStyleByType(l);if(d!=null&&e.strokeColor!=d.strokeColor||!f(l)&&f(k)||f(l)&&!f(k))d=c.extend(!0,{},d),f(k)&&(d.strokeOpacity=Settings.CrossingsStyle.fillOpacity),n=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(n),null,d),r.addFeatures(n),r.drawFeature(n),
n=[];var d=e,k=l,p=p.getPath(),i;for(i in p)n.push(new OpenLayers.Geometry.Point(p[i].x,p[i].y))}if(e!=null)d=c.extend(!0,{},e),f(l)&&(d.strokeOpacity=Settings.CrossingsStyle.fillOpacity),n=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(n),null,d),r.addFeatures(n),r.drawFeature(n);a();g()}};this.clear=function(){r.destroyFeatures();j.destroyFeatures()};var a=function(){if(h!==null){var a=r.map.getResolution(),b=1E3;switch(Settings.Map.maxZoom-r.map.getZoomForResolution(a)){case 0:b=
200;break;case 1:case 2:b=500;break;case 3:case 4:b=1E3;break;case 5:case 6:b=2E3;break;case 7:b=5E3;break;case 8:b=1E4;break;case 9:b=5E4;break;default:b=1E3}for(var a=[],c=h.getPath(),d=0,f=c[0],g=0,k=1;k<c.length;k++){var u=c[k],p=Math.sqrt(Math.pow(u.x-f.x,2)+Math.pow(u.y-f.y,2));d+p>b?(p=(b-d)/p,d=f.x+(u.x-f.x)*p,f=f.y+(u.y-f.y)*p,g+=b,a.push({x:d,y:f,label:(g/1E3).toFixed(1)+" km"}),f={x:d,y:f},d=0,k--):(d+=p,f=u)}for(k in a)b=a[k],b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.x,
b.y),null,{pointRadius:"4",fillColor:"#ffffff",fillOpacity:1,strokeColor:"#ff0000",strokeOpacity:1,strokeWidth:2,label:b.label,fontSize:"12px",fontWeight:"bold",fontColor:"#ff0000",labelAlign:"lb",labelXOffset:6,labelYOffset:6}),j.addFeatures(b),j.drawFeature(b),e.push(b)}},b=function(a){return a==6||a==15||a==24||a==36?!0:!1},f=function(a){return a==35||a==23?!0:!1},g=function(){var a=Settings.Map.maxZoom-c.getZoom();if(!(h===null||a>Settings.CrossingsStyle.earliestVisibleZoom)){var e=function(a,
b){for(var d=b+1;d<a.length;d++)if(a[b].distanceTo(a[d])>F)return d;return!1},g=function(a,b,d){var c=[],f=a.length,g=0,d=Settings.CrossingsStyle.strokeDistanceLevels[d];if(b==-1)g=Math.PI;var b=function(a,b){var d=new OpenLayers.Geometry.Point(a.x,a.y),c=g==0?5*Math.PI/4:3*Math.PI/4;b&&(c=g==0?c-Math.PI/2:c+Math.PI/2);c=c*180/Math.PI;d.rotate(c,h);return d},i=e(a,0),j=Math.atan2(a[0].y-a[i].y,a[0].x-a[i].x)+Math.PI/2,h=new OpenLayers.Geometry.Point(a[0].x+d,a[0].y),j=(j+(g==0?Math.PI:0))*180/Math.PI;
h.rotate(j,a[0]);i=b(a[0],!1);c.push(i);c.push(h);for(var m=0;m<f-1;m++){var j=0,i=e(a,m);if(i!=!1){j=Math.atan2(a[i].y-a[m].y,a[i].x-a[m].x)+Math.PI/2;m=e(a,i);if(m!=!1){m=Math.atan2(a[m].y-a[i].y,a[m].x-a[i].x)+Math.PI/2;if(j>m)for(;j-m>Math.PI;j-=Math.PI*2);else for(;m-j>Math.PI;m-=Math.PI*2);j=(j+m)/2}h=new OpenLayers.Geometry.Point(a[i].x+d,a[i].y);j=(j+g)*180/Math.PI;h.rotate(j,a[i]);c.push(h);m=i-1}}a=b(a[f-1],!0);c.push(a);return c},d=function(a,b){var d=Settings.CrossingsStyle.strokeDistanceLevels[b],
c=a.length;if(c<2)return null;var e=[],f=Math.atan2(a[c-1].y-a[0].y,a[c-1].x-a[0].x),g=new OpenLayers.Geometry.Point(a[0].x+d,a[0].y);g.rotate(f*180/Math.PI,a[0]);g.rotate(90,a[0]);var i=g.clone();i.rotate(180,a[0]);var m=i.clone();m.rotate(-135,g);var j=g.clone();j.rotate(135,i);d=new OpenLayers.Geometry.Point(a[c-1].x+d,a[c-1].y);d.rotate(f*180/Math.PI,a[c-1]);d.rotate(90,a[c-1]);f=d.clone();f.rotate(180,a[c-1]);c=f.clone();c.rotate(135,d);var h=d.clone();h.rotate(-135,f);e.push(m);e.push(g);e.push(i);
e.push(j);e.push(c);e.push(d);e.push(f);e.push(h);return e},n=null,l=[],r=[],u=null,p=null,i=0,F=Settings.CrossingsStyle.tolerance,y=Settings.CrossingsStyle,z=Settings.Map.scales[a]*Settings.CrossingsStyle.underpassToleranceInPixels;y.strokeWidth=a>=Settings.CrossingsStyle.thinnerStrokeZoomlvl?1:2;var G=h.getArcs(),B;for(B in G){var w=G[B],t=w.getType();b(n)&&!b(t)?(n=g(l,0,a),n=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(n),null,y),j.addFeatures(n),j.drawFeature(n),k.push(n),
l=g(l,-1,a),n=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(l),null,y),j.addFeatures(n),j.drawFeature(n),k.push(n),l=[]):f(n)&&!f(t)&&(l=d(l,a),u=new OpenLayers.Geometry.LineString(l.slice(0,4)),p!==null&&i>z?(r.push(u),r.push(p)):p===null&&r.push(u),p=new OpenLayers.Geometry.LineString(l.slice(4,8)),i=0,l=[]);n=t;u=w.getPath();if(b(t)||f(t))for(var A in u)l.push(new OpenLayers.Geometry.Point(u[A].x,u[A].y));else i+=w.getLength()}r.push(p);for(B in r)a=new OpenLayers.Feature.Vector(r[B],
null,Settings.CrossingsStyle),j.addFeatures(a),j.drawFeature(a),k.push(a)}},h=null,e=[],k=[],r=new OpenLayers.Layer.Vector("RouteLayer"),j=new OpenLayers.Layer.Vector("MapMarkLayer");c.addLayer(r);c.addLayer(j);c.events.register("zoomend",null,function(){for(var b in e)j.removeFeatures(e[b]);e=[];a()});c.events.register("zoomend",null,function(){for(var a in k)j.removeFeatures(k[a]);g()})}
function PoiLayer(c,a,b,f){this.addPoi=function(a,b){for(var c in g)if(g[c].id==a)return;g.push({id:a,name:b})};this.removePoi=function(a){var b=[],c;for(c in g)g[c].id!=a&&b.push(g[c]);g=b};this.removePois=function(){g=[]};this.getPois=function(){return g};this.redraw=function(){if(g.length>0){var a="<Filter>";a+="<Or>";for(var b in g)a+="<PropertyIsEqualTo><PropertyName>location_type_id</PropertyName><Literal>"+g[b].id+"</Literal></PropertyIsEqualTo>";a+="</Or>";a+="</Filter>";h.mergeNewParams({FILTER:a});
h.setVisibility(!0)}else h.setVisibility(!1);h.redraw()};var g=[],h=new OpenLayers.Layer.WMS("Poi",a,{layers:b,transparent:"true"},{gutter:6,buffer:0});h.setVisibility(!1);c.addLayer(h);var e=new OpenLayers.Control.WMSGetFeatureInfo({url:a,title:"",maxFeatures:100,hover:!0,layers:[h],queryVisible:!0,infoFormat:"application/vnd.ogc.gml"}),k=null;e.events.register("getfeatureinfo",this,function(a){var b=function(){var a=null;this.setPopup=function(b){a=b;r.addPopup(a)};this.destroyPopup=function(){a!==
null&&(r.removePopup(a),a.destroy(),k=null);e.activate()}},c=g,h;for(h in c)c[h].pois=[];var d=!1;if(a.features&&a.features.length)for(h in a.features){var n=a.features[h].attributes.location_type_id,l;for(l in c)c[l].id==n&&(c[l].pois.push(a.features[h]),d=!0)}if(d==!0){e.deactivate();k!=null&&(k.destroyPopup(),k=null);a=r.getLonLatFromPixel(a.xy);k=new b;b='<div class="PoiPopupContainer">';b+='<div class="PoiPopupTitle">';b+=f;b+="</div>";b+='<div class="PoiPopupContent">';for(h in c)if(d=c[h],
d.pois.length>0){b+='<div class="PoiCategoryArea">';b+='<div class="PoiCategoryTitle">';b+=d.name;b+="</div>";for(l in d.pois){var n=d.pois[l],v="",u;for(u in Config.poiWmsFeatureinfoAttributeNames)if(v=n.attributes[Config.poiWmsFeatureinfoAttributeNames[u]],v!==null&&v.length>0)break;b+='<div class="PoiName">';b+=v;b+="</div>"}b+="</div>"}b+="</div>";b+="</div>";c=new OpenLayers.Popup.FramedCloud("PoiPopup",a,null,b,null,!0,k.destroyPopup);c.autoSize=!0;c.minSize=new OpenLayers.Size(200,100);c.maxSize=
new OpenLayers.Size(400,200);k.setPopup(c);jQuery("#PoiPopup").mouseleave(function(){e.activate()});jQuery("#PoiPopup").mouseenter(function(){e.deactivate()})}});c.addControl(e);e.activate();var r=c}
function RoiLayer(c){this.addRoi=function(b,c,h,e){for(var k in a)if(a[k].name==b)return;a.push({name:b,wmsType:c,width:h,color:e})};this.removeRoi=function(b){var c=[],h;for(h in a)a[h].name!=b&&c.push(a[h]);a=c};this.removeRois=function(){a=[]};this.getRois=function(){return a};this.redraw=function(){if(a.length>0){var c="<Filter>";c+="<Or>";for(var g in a)c+="<PropertyIsEqualTo><PropertyName>type</PropertyName><Literal>"+a[g].wmsType+"</Literal></PropertyIsEqualTo>";c+="</Or>";c+="</Filter>";b.mergeNewParams({FILTER:c});
b.setVisibility(!0)}else b.setVisibility(!1);b.redraw()};var a=[],b=new OpenLayers.Layer.WMS("StaticRoute",Config.webpageBaseUrl+"roi_wms/",{layers:Config.roiWmsLayers,transparent:"true"},{gutter:6,buffer:0});b.setVisibility(!1);c.addLayer(b)}
function MapMenu(c){this.setLastMapClickData=function(c,e){f=c;b=e;a()};this.getMapClickPosition=function(){return f};this.getMapClickLocation=function(){return b};this.show=function(){a()};this.hide=function(){g.hide()};var a=function(){var a=f.y-5,b=f.x-5;g.css("position","absolute");g.css("z-index",1E3);g.css("top",a+"px");g.css("left",b+"px");g.show()},b=null,f=null,g=c}
var urlHandler=null,OL_Map=null,fullScreenMap=!1,initOpenLayers=function(c,a,b,f){var g=jQuery,a={maxExtent:new OpenLayers.Bounds(0,0,3E6,7E6),controls:[new OpenLayers.Control.ScaleLine],resolutions:[0.5,1.125,2.5,3.125,4,6.25,12.5,20,66.66,133],restrictedExtent:new OpenLayers.Bounds(24E5,65E5,27E5,68E5),units:"m",projection:"EPSG:2392",center:new OpenLayers.LonLat(a,b),zoom:f},c=new OpenLayers.Map(c,a);c.addControl(new OpenLayers.Control.PanZoomBar,new OpenLayers.Pixel(4,12));a=new OpenLayers.Layer.TMS("Hillshade",
"http://ntile1.navici.com/t/hsl-hillshade/hs/",{layers:"basic",buffer:0,transitionEffect:"resize",isBaseLayer:!1,opacity:Settings.LayerOpacities.hillshade});a.getURL=function(a){var b=Config.cid,c=this.map.getResolution();return this.url+"2392x"+c+"x"+Math.round(a.left/(c*this.tileSize.w))+"x"+Math.round(a.bottom/(c*this.tileSize.h))+".png?cid="+b};b=new OpenLayers.Layer.TMS("ContourColor","http://ntile1.navici.com/t/hsl-hillshade/cm/",{layers:"basic",buffer:0,transitionEffect:"resize",isBaseLayer:!1,
opacity:Settings.LayerOpacities.contourcolor});b.getURL=function(a){var b=Config.cid,c=this.map.getResolution();return this.url+"2392x"+c+"x"+Math.round(a.left/(c*this.tileSize.w))+"x"+Math.round(a.bottom/(c*this.tileSize.h))+".png?cid="+b};var h=new OpenLayers.Layer.TMS("Map","http://ntile1.navici.com/t/hsl-maps/2011/",{layers:"basic",buffer:0,transitionEffect:"resize",opacity:1});h.getURL=function(a){var b=Config.cid,c=this.map.getResolution();return this.url+"2392x"+c+"x"+Math.round(a.left/(c*
this.tileSize.w))+"x"+Math.round(a.bottom/(c*this.tileSize.h))+".png?cid="+b};var e=new OpenLayers.Layer.TMS("Aerial","http://ntile1.navici.com/t/hsl-aerials/2011/",{layers:"basic",buffer:0,transitionEffect:"resize",opacity:1});e.getURL=function(a){var b=Config.cid,c=this.map.getResolution();return this.url+"2392x"+c+"x"+Math.round(a.left/(c*this.tileSize.w))+"x"+Math.round(a.bottom/(c*this.tileSize.h))+".jpeg?cid="+b};var k=Settings.LayerOpacities.contour;g.browser.msie&&parseInt(g.browser.version,
10)<9&&(k=1);k=new OpenLayers.Layer.TMS("Contour","http://ntile1.navici.com/t/hsl-hillshade/cn/",{layers:"basic",buffer:0,transitionEffect:"resize",isBaseLayer:!1,opacity:k});k.getURL=function(a){var b=Config.cid,c=this.map.getResolution();return this.url+"2392x"+c+"x"+Math.round(a.left/(c*this.tileSize.w))+"x"+Math.round(a.bottom/(c*this.tileSize.h))+".png?cid="+b};c.addLayer(a);c.addLayer(b);c.addLayer(h);c.addLayer(e);c.addLayer(k);a.setZIndex(10);b.setZIndex(12);h.setZIndex(22);e.setZIndex(23);
k.setZIndex(24);c.zoomTo(f);f=new OpenLayers.Control({id:"MapCopyright",allowSelection:!1});c.addControl(f);g("#MapCopyright").append(Dictionary.MapArea.MapCopyright);f=new OpenLayers.Control({id:"AerialCopyright",allowSelection:!1});c.addControl(f);g("#AerialCopyright").append(Dictionary.MapArea.AerialCopyright);g("#AerialCopyright").hide();f=new OpenLayers.Control({id:"TerrainCopyright",allowSelection:!1});c.addControl(f);g("#TerrainCopyright").append(Dictionary.MapArea.TerrainCopyright);g("#TerrainCopyright").hide();
return c};function main(c){urlHandler=new LBS.STATESAVER.UrlHandler(1E3);initService(c,startService)}
function startService(c,a,b,f,g,h,e,k){function r(a,b,d){return function(c){ja==a&&ka==b&&c.getCategory()!==RouteLocation.CATEGORY_POINT&&(c.setCategory(RouteLocation.CATEGORY_POINT),d(c))}}function j(){for(var a in D)if(D[a].getLocation()==null)return!0;return!1}function m(){var a=E.getRouteRequest(),b=a.getViaLocations();b.sort(va);var d=!0,c=!0,e;for(e in D)D[e].setLocation(b[e]),Q[e].unbind("click"),Q[e].click(new sa(e)),b[e]!=null?(d=!1,K[e].show(),Q[e].show()):(c=!1,K[e].hide(),Q[e].hide());
c?ea.hide():ea.show();d?S.hide():S.show();a.setViaLocations(b)}function o(){T.deactivate();ca.deactivate();N.handler.layer.setVisibility(!1);fa.removeAllFeatures()}function s(){T.activate();ca.activate()}var d=jQuery,n=LBS.GUI,l=c.lang,v=c.poiCategories,u=c.userPoiCategories,c=c.predefinedRoutes,p=d("#"+Settings.Map.placeHolderId),i=getMapDimensions();p.css({width:i.width+"px",height:i.height+"px"});OL_Map=initOpenLayers(Settings.Map.placeHolderId,a.MAP_START_X,a.MAP_START_Y,Settings.Map.maxZoom-
a.MAP_INI_ZOOM);OL_Map.setCenter(new OpenLayers.LonLat(a.MAP_START_X,a.MAP_START_Y));var F=new RoiLayer(OL_Map),y=new PoiLayer(OL_Map,Config.webpageBaseUrl+"poi_wms/",Config.poiWmsLayers,Dictionary.PoiPopup.title),i=new PoiLayer(OL_Map,Config.webpageBaseUrl+"user_poi_wms/",Config.userPoiWmsLayers,Dictionary.UserPoiPopup.title),z=new RouteLayer(OL_Map),G=new OpenLayers.Layer.Vector("Vector",{styleMap:new OpenLayers.StyleMap({pointRadius:0,graphicZIndex:1}),rendererOptions:{yOrdering:!0,zIndexing:!0}});
OL_Map.addLayer(G);var B=new OpenLayers.Control.Navigation({zoomWheelEnabled:!1,handleRightClicks:!0,documentDrag:!1});OL_Map.addControl(B);OL_Map.events.register("zoomend",null,function(){var a=OL_Map.getResolution(),a=Settings.Map.maxZoom-OL_Map.getZoomForResolution(a);urlHandler.setParam("mapzoom",a)});OL_Map.events.register("moveend",null,function(){var a=OL_Map.getCenter(),a=new LBS.STATESAVER.Point(Math.round(a.lon),Math.round(a.lat),LBS.STATESAVER.Point.COORDINATE_SYSTEM.INTERNAL);urlHandler.setLocation("mapcenter",
a)});var w=OL_Map.getLayersByName("Hillshade")[0],t=OL_Map.getLayersByName("Map")[0],A=OL_Map.getLayersByName("Aerial")[0],H=OL_Map.getLayersByName("ContourColor")[0],P=OL_Map.getLayersByName("Contour")[0],U=function(){t.setOpacity(1);w.setVisibility(!1);H.setVisibility(!1);P.setVisibility(!1);t.setVisibility(!0);A.setVisibility(!1);OL_Map.setBaseLayer(t);d("#AerialCopyright").hide();d("#TerrainCopyright").hide();d("#MapCopyright").show()},V=function(){w.setVisibility(!1);H.setVisibility(!1);P.setVisibility(!1);
t.setVisibility(!1);A.setVisibility(!0);OL_Map.setBaseLayer(A);d("#MapCopyright").hide();d("#TerrainCopyright").hide();d("#AerialCopyright").show()},X=function(){A.setVisibility(!1);w.setVisibility(!0);H.setVisibility(!0);t.setVisibility(!0);P.setVisibility(!0);OL_Map.setBaseLayer(t);t.setOpacity(Settings.LayerOpacities.map);d("#AerialCopyright").hide();d("#MapCopyright").hide();d("#TerrainCopyright").show()},I=new n.RadioButtonStyleManager(Settings.mainTabs.tab.style),x=n.RadioButton.SELECTION_STATE.SELECTED,
C=n.RadioButton.SELECTION_STATE.UNSELECTED,q=n.RadioButton.SELECTION_STATE.UNSELECTED;urlHandler.getParam("background")=="aerial"?(x=n.RadioButton.SELECTION_STATE.UNSELECTED,C=n.RadioButton.SELECTION_STATE.SELECTED,q=n.RadioButton.SELECTION_STATE.UNSELECTED,V()):urlHandler.getParam("background")=="terrain"?(C=x=n.RadioButton.SELECTION_STATE.UNSELECTED,q=n.RadioButton.SELECTION_STATE.SELECTED,X()):U();x=new n.RadioButton(d("#MainTabsMapTab").get(0),n.Button.STATE.ENABLED,x,"Map");I.addRadioButton(x);
C=new n.RadioButton(d("#MainTabsAerialTab").get(0),n.Button.STATE.ENABLED,C,"Aerial");I.addRadioButton(C);q=new n.RadioButton(d("#MainTabsTerrainTab").get(0),n.Button.STATE.ENABLED,q,"Terrain");I.addRadioButton(q);var L=new n.RadioButtonGroup;L.addRadioButton(x);L.addRadioButton(C);L.addRadioButton(q);L.addSelectionChangeCBF(function(a){a=a.getSelectedRadioButton().getData();a=="Map"?(urlHandler.setParam("background","map"),U()):a=="Aerial"?(urlHandler.setParam("background","aerial"),V()):a=="Terrain"?
(urlHandler.setParam("background","terrain"),X()):urlHandler.setParam("background",null);W();ba()});var W=function(){var a=d("#PrintViewLink"),b=E.getRouteRequest(),c=L.getSelectedRadioButton().getData(),e="map";c=="Aerial"?e="aerial":c=="Terrain"&&(e="terrain");var c=OL_Map.getResolution(),f=Settings.Map.maxZoom-OL_Map.getZoomForResolution(c),c=getMapDimensions(),g=c.width,i=c.height,c=OL_Map.getCenter(),h=Math.round(c.lon),j=Math.round(c.lat),k=E.getRoute(),c="printview/?";c+="width="+encodeURIComponent(g);
c+="&height="+encodeURIComponent(i);c+="&x="+encodeURIComponent(h);c+="&y="+encodeURIComponent(j);c+="&zoom="+encodeURIComponent(f);c+="&background="+encodeURIComponent(e);if(k!==null){var l=b.getRoutingProfile(),e=b.getStartLocation(),f=b.getEndLocation(),b=b.getViaLocations(),g="";e.getCategory()==RouteLocation.CATEGORY_POINT&&e.getName()===null?g=Dictionary.Search.coordinates+" ["+Math.round(e.getX())+", "+Math.round(e.getY())+"]":(g=e.getName(),e.getNumber()!==null&&(g+=" ",g+=e.getNumber()),
g+=", ",g+=e.getCity());i="";f.getCategory()==RouteLocation.CATEGORY_POINT&&f.getName()===null?i=Dictionary.Search.coordinates+" ["+Math.round(f.getX())+", "+Math.round(f.getY())+"]":(i=f.getName(),f.getNumber()!==null&&(i+=" ",i+=f.getNumber()),i+=", ",i+=f.getCity());c+="&profile="+encodeURIComponent(l);c+="&from=location*"+encodeURIComponent(g)+"*"+Math.round(e.getX())+"*"+Math.round(e.getY());c+="&to=location*"+encodeURIComponent(i)+"*"+Math.round(f.getX())+"*"+Math.round(f.getY());for(l=0;l<
b.length;l++)b[l]!=null&&(c+="&via[]=location* *"+Math.round(b[l].getX())+"*"+Math.round(b[l].getY()))}b=F.getRois();for(l in b)c+="&rois[]="+encodeURIComponent(b[l].name);b=y.getPois();for(l in b)c+="&pois[]="+encodeURIComponent(b[l].id);a.attr("href",c);a.attr("target","_blank")};OL_Map.events.register("zoomend",null,W);OL_Map.events.register("moveend",null,W);var ba=function(){var a=d("#RoutePrintViewLink");if(E.getRoute()===null)a.hide();else{var b=E.getRouteRequest(),c=L.getSelectedRadioButton().getData(),
e="map";c=="Aerial"?e="aerial":c=="Terrain"&&(e="terrain");c="routeprintview/?";c+="background="+encodeURIComponent(e);var e=b.getRoutingProfile(),f=b.getStartLocation(),g=b.getEndLocation(),b=b.getViaLocations(),i="";f.getCategory()==RouteLocation.CATEGORY_POINT&&f.getName()===null?i=Dictionary.Search.coordinates+" ["+Math.round(f.getX())+", "+Math.round(f.getY())+"]":(i=f.getName(),f.getNumber()!==null&&(i+=" ",i+=f.getNumber()),i+=", ",i+=f.getCity());var h="";g.getCategory()==RouteLocation.CATEGORY_POINT&&
g.getName()===null?h=Dictionary.Search.coordinates+" ["+Math.round(g.getX())+", "+Math.round(g.getY())+"]":(h=g.getName(),g.getNumber()!==null&&(h+=" ",h+=g.getNumber()),h+=", ",h+=g.getCity());c+="&profile="+encodeURIComponent(e);c+="&from=location*"+encodeURIComponent(i)+"*"+Math.round(f.getX())+"*"+Math.round(f.getY());c+="&to=location*"+encodeURIComponent(h)+"*"+Math.round(g.getX())+"*"+Math.round(g.getY());for(e=0;e<b.length;e++)b[e]!=null&&(c+="&via[]=location* *"+Math.round(b[e].getX())+"*"+
Math.round(b[e].getY()));f=F.getRois();for(e in f)c+="&rois[]="+encodeURIComponent(f[e].name);f=y.getPois();for(e in f)c+="&pois[]="+encodeURIComponent(f[e].id);a.attr("href",c);a.attr("target","_blank");a.show()}};d("#FullScreenMapModeButton").click(function(){d("#MainContainer").hide();fullScreenMap=!0;d("body").append($("#MapAreaContainer"));d("#MapAreaContainer").css("position","fixed");na();d("#FullScreenMapModeButton").hide();d("#NormalMapModeButton").show();B.enableZoomWheel();d("#FullScreenMapModeButton").removeClass().addClass("FullScreenMapModeButton")});
d("#FullScreenMapModeButton").mouseover(function(){d("#FullScreenMapModeButton").removeClass().addClass("FullScreenMapModeButtonMouseOver")});d("#FullScreenMapModeButton").mouseout(function(){d("#FullScreenMapModeButton").removeClass().addClass("FullScreenMapModeButton")});d("#NormalMapModeButton").click(function(){d("#MainContainer").show();fullScreenMap=!1;d("#NormalMapModeMapContainer").prepend($("#MapAreaContainer"));d("#MapAreaContainer").css("position","relative");na();d("#FullScreenMapModeButton").show();
d("#NormalMapModeButton").hide();B.disableZoomWheel();d("#NormalMapModeButton").removeClass().addClass("NormalMapModeButton")});d("#NormalMapModeButton").mouseover(function(){d("#NormalMapModeButton").removeClass().addClass("NormalMapModeButtonMouseOver")});d("#NormalMapModeButton").mouseout(function(){d("#NormalMapModeButton").removeClass().addClass("NormalMapModeButton")});d("#AboutFrameToggleButton").click(function(){d("#AboutFrame").toggleClass("AboutFrameToggled");d("#AboutFrame").toggleClass("AboutFrameUnToggled")});
I=new SearchResultFrame(d("#SearchResultFrame").get(0));I.addStateChangeCBF(function(){d("#AboutFrame").hide();d("#MapLegend").show();d("#DisclaimerTextArea").show();d("#ExportRouteLinks").show();var a=E.getRouteRequest(),b=a.getRoutingProfile(),c=a.getStartLocation(),e=a.getEndLocation(),a=a.getViaLocations(),f="";c.getCategory()==RouteLocation.CATEGORY_POINT&&c.getName()===null?f=Dictionary.Search.coordinates+" ["+Math.round(c.getX())+", "+Math.round(c.getY())+"]":(f=c.getName(),c.getNumber()!==
null&&(f+=" ",f+=c.getNumber()),f+=", ",f+=c.getCity());var g="";e.getCategory()==RouteLocation.CATEGORY_POINT&&e.getName()===null?g=Dictionary.Search.coordinates+" ["+Math.round(e.getX())+", "+Math.round(e.getY())+"]":(g=e.getName(),e.getNumber()!==null&&(g+=" ",g+=e.getNumber()),g+=", ",g+=e.getCity());var i=d("#ExportRouteGpxLink"),h="getroute/?";h+="format=gpx";h+="&profile="+b;h+="&from=location*"+encodeURIComponent(f)+"*"+Math.round(c.getX())+"*"+Math.round(c.getY());h+="&to=location*"+encodeURIComponent(g)+
"*"+Math.round(e.getX())+"*"+Math.round(e.getY());for(var j=0;j<a.length;j++)a[j]!=null&&(h+="&via[]=location* *"+Math.round(a[j].getX())+"*"+Math.round(a[j].getY()));i.attr("href",h);i.attr("target","_blank");i=d("#ExportRouteKmlLink");h="getroute/?";h+="format=kml";h+="&profile="+b;h+="&from=location*"+encodeURIComponent(f)+"*"+Math.round(c.getX())+"*"+Math.round(c.getY());h+="&to=location*"+encodeURIComponent(g)+"*"+Math.round(e.getX())+"*"+Math.round(e.getY());for(j=0;j<a.length;j++)a[j]!=null&&
(h+="&via[]=location* *"+Math.round(a[j].getX())+"*"+Math.round(a[j].getY()));i.attr("href",h);i.attr("target","_blank");i=d("#JourneyPlannerLink");h="http://www.reittiopas.fi/"+l+"/?";h+="from_in=location*"+encodeURIComponent(f)+"*"+Math.round(c.getX())+"*"+Math.round(c.getY());h+="&to_in=location*"+encodeURIComponent(g)+"*"+Math.round(e.getX())+"*"+Math.round(e.getY());i.attr("href",h);i.attr("target","_blank");i.show()});var q=function(a){return function(b){if(b===null)urlHandler.setParam(a,null);
else{var c=LBS.STATESAVER,d=null,d=null;b.getCategory()==RouteLocation.CATEGORY_POI?(d=b.getName(),b.getCity()!==null&&(d+=", "+b.getCity()),d=new c.NamedLocation(d,c.NamedLocation.TYPE.POI)):b.getCategory()==RouteLocation.CATEGORY_ADDRESS?(d=b.getName()+" "+b.getNumber(),b.getCity()!==null&&(d+=", "+b.getCity()),d=new c.NamedLocation(d,c.NamedLocation.TYPE.ADDRESS)):b.getCategory()==RouteLocation.CATEGORY_STREET?(d=b.getName(),b.getCity()!==null&&(d+=", "+b.getCity()),d=new c.NamedLocation(d,c.NamedLocation.TYPE.STREET)):
(b.getCategory(),d=new c.Point(Math.round(b.getX()),Math.round(b.getY()),c.Point.COORDINATE_SYSTEM.KKJ2));urlHandler.setLocation(a,d)}}},C=new n.ButtonStyleManager(Settings.suggestionList.ScrollUpButton.style),x=new n.ButtonStyleManager(Settings.suggestionList.ScrollDownButton.style),R=new SelectionList(d("#SearchFromSuggestionList").get(0),"SuggestionListEnabled","SuggestionListDisabled","SuggestionListInvisible",new SelectionList.parameters(7,6,0,SelectionList.STATE_ENABLED)),da=new n.Button(d("#SearchFromScrollUpButton").get(0),
n.Button.STATE.INVISIBLE);C.addButton(da);var ta=new n.Button(d("#SearchFromScrollDownButton").get(0),n.Button.STATE.INVISIBLE);x.addButton(ta);R.addScrollUpButton(da,Settings.suggestionList.ScrollUpButton.scrollDelay);R.addScrollDownButton(ta,Settings.suggestionList.ScrollDownButton.scrollDelay);var Z=new SearchFrame(d("#SearchFromInputField").get(0),R);Z.addRouteLocationChangeCBF(new q("from"));d("#SearchFromInputField").get(0).focus();R=new SelectionList(d("#SearchToSuggestionList").get(0),"SuggestionListEnabled",
"SuggestionListDisabled","SuggestionListInvisible",new SelectionList.parameters(7,6,0,SelectionList.STATE_ENABLED));da=new n.Button(d("#SearchToScrollUpButton").get(0),n.Button.STATE.INVISIBLE);C.addButton(da);C=new n.Button(d("#SearchToScrollDownButton").get(0),n.Button.STATE.INVISIBLE);x.addButton(C);R.addScrollUpButton(da,Settings.suggestionList.ScrollUpButton.scrollDelay);R.addScrollDownButton(C,Settings.suggestionList.ScrollDownButton.scrollDelay);var aa=new SearchFrame(d("#SearchToInputField").get(0),
R);aa.addRouteLocationChangeCBF(new q("to"));for(var D=[],x=function(){for(var a=[],b=0,c=0;c<D.length;c++){var d=D[c].getLocation();if(d===null)a.push(null);else{var e=LBS.STATESAVER,f=null,f=null;d.getCategory()==RouteLocation.CATEGORY_POI?(f=d.getName(),d.getCity()!==null&&(f+=", "+d.getCity()),f=new e.NamedLocation(f,e.NamedLocation.TYPE.POI)):d.getCategory()==RouteLocation.CATEGORY_ADDRESS?(f=d.getName()+" "+d.getNumber(),d.getCity()!==null&&(f+=", "+d.getCity()),f=new e.NamedLocation(f,e.NamedLocation.TYPE.ADDRESS)):
d.getCategory()==RouteLocation.CATEGORY_STREET?(f=d.getName(),d.getCity()!==null&&(f+=", "+d.getCity()),f=new e.NamedLocation(f,e.NamedLocation.TYPE.STREET)):(d.getCategory(),f=new e.Point(Math.round(d.getX()),Math.round(d.getY()),e.Point.COORDINATE_SYSTEM.KKJ2));a.push(f);b++}}b>0?urlHandler.setLocationArray("via",a):urlHandler.setParam("via",null)},q=0;q<Settings.MaxVias;q++)C=null,e!==null&&e[q]!=null&&(C=e[q]),D.push(new LocationManager(C)),D[q].addLocationChangeCBF(x);var ja=null,ka=null,O=new MapMenu(d("#MapMenu"));
O.hide();OpenLayers.Control.Click=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{single:!0,"double":!1,pixelTolerance:0,stopSingle:!0,stopDouble:!1},initialize:function(){this.handlerOptions=OpenLayers.Util.extend({},this.defaultHandlerOptions);OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Click(this,{click:this.trigger},this.handlerOptions)},trigger:function(a){var b=OL_Map.getLonLatFromViewPortPx(a.xy);O.setLastMapClickData({x:a.xy.x,
y:a.xy.y},{x:b.lon,y:b.lat})}});e=new OpenLayers.Control.Click;OL_Map.addControl(e);e.activate();OL_Map.events.register("mousemove",null,function(){O.hide()});var ga=d("#StartLocationMapMenuItem");ga.mouseenter(function(){ga.removeClass().addClass("StartLocationMapMenuItemMouseOver")});ga.mouseleave(function(){ga.removeClass().addClass("StartLocationMapMenuItem")});ga.click(function(){var a=O.getMapClickLocation();O.hide();var b=new RouteLocation(a.x,a.y);b.setCategory(RouteLocation.CATEGORY_POINT);
Z.setRouteLocation(b);ja=a.x;ka=a.y;KLERO.UTIL.reverseGeocode(a.x,a.y,new r(a.x,a.y,Z.setRouteLocation));E.searchRoute(!1)});var ha=d("#EndLocationMapMenuItem");ha.mouseenter(function(){ha.removeClass().addClass("EndLocationMapMenuItemMouseOver")});ha.mouseleave(function(){ha.removeClass().addClass("EndLocationMapMenuItem")});ha.click(function(){var a=O.getMapClickLocation();O.hide();var b=new RouteLocation(a.x,a.y);b.setCategory(RouteLocation.CATEGORY_POINT);aa.setRouteLocation(b);ja=a.x;ka=a.y;
KLERO.UTIL.reverseGeocode(a.x,a.y,new r(a.x,a.y,aa.setRouteLocation));E.searchRoute(!1)});for(var C=function(a){return function(){var b=O.getMapClickLocation();O.hide();b=new RouteLocation(b.x,b.y);b.setCategory(RouteLocation.CATEGORY_POINT);D[a].setLocation(b);m();E.searchRoute(!1);j()||o()}},K=[],q=0;q<Settings.MaxVias;q++)x=q+1,x=d("#ViaLocationMapMenuItem"+x),K.push(x),K[q].mouseenter(function(){d(this).removeClass().addClass("ViaLocationMapMenuItemMouseOver")}),K[q].mouseleave(function(){d(this).removeClass().addClass("ViaLocationMapMenuItem")}),
K[q].click(new C(q));var ea=d("#ViaLocationAddMapMenuItem");K.push(ea);q=K.length-1;K[q].mouseenter(function(){d(this).removeClass().addClass("ViaLocationMapMenuItemMouseOver")});K[q].mouseleave(function(){d(this).removeClass().addClass("ViaLocationMapMenuItem")});K[q].click(new function(){return function(){var a=-1,b;for(b in D)if(D[b].getLocation()==null){a=b;break}a!=-1&&(b=O.getMapClickLocation(),O.hide(),b=new RouteLocation(b.x,b.y),b.setCategory(RouteLocation.CATEGORY_POINT),D[a].setLocation(b),
m(),E.searchRoute(!1),j()||o())}});for(var va=function(a,b){return a==null?1:b==null?-1:0},sa=function(a){return function(b){D[a].setLocation(null);m();E.searchRoute(!1);J.deactivate();s();J.activate();b.stopPropagation()}},Q=[],R=C=!1,q=0;q<Settings.MaxVias;q++)x=q+1,x=d("#DeleteViaLocationMapMenuItem"+x),Q.push(x),Q[q].mouseenter(function(){d(this).removeClass().addClass("DeleteViaLocationMapMenuItemMouseOver")}),Q[q].mouseleave(function(){d(this).removeClass().addClass("DeleteViaLocationMapMenuItem")}),
Q[q].click(new sa(q)),D[q].getLocation()===null?(Q[q].hide(),K[q].hide(),C=!0):(Q[q].show(),K[q].show(),R=!0);var S=d("#DeleteAllViaLocationsMapMenuItem");S.mouseenter(function(){S.removeClass().addClass("DeleteAllViaLocationsMapMenuItemMouseOver")});S.mouseleave(function(){S.removeClass().addClass("DeleteAllViaLocationsMapMenuItem")});S.click(function(){O.hide();for(var a=0;a<D.length;a++)D[a].setLocation(null);m();E.searchRoute(!1);J.deactivate();s();J.activate()});var oa=new ElevationProfileFrame(d("#ElevationProfileArea"),
d("#RoadSurfaceBarArea")),E=new SearchArea(Z,aa,D,I,oa,z);E.addRouteChangeCBF(W);E.addRouteChangeCBF(ba);var la=OL_Map.getLayersByName("RouteLayer"),fa=new OpenLayers.Layer.Vector("SnapLayer");OL_Map.addLayer(fa);fa.setVisibility(!1);var N=new OpenLayers.Control.DrawFeature(fa,OpenLayers.Handler.Point);N.handler.stopDown=!1;N.handler.stopUp=!1;N.handler.click=null;N.handler.dblclick=null;N.handler.finalize=function(){return!0};OL_Map.addControl(N);N.activate();N.handler.layer.setVisibility(!1);var ca=
new OpenLayers.Control.Snapping({layer:fa,targets:[G,la[0]],defaults:{tolerance:8},precedence:["vertex","node","edge"],greedy:!0});OL_Map.addControl(ca);var T=new OpenLayers.Control.DragFeature(N.handler.layer);T.handlers.drag.click=null;OL_Map.addControl(T);s();T.onDrag=function(){ca.deactivate()};var M=0;T.onStart=function(a){for(var b=E.getRouteRequest().getViaLocations(),c=M=0,a=a.geometry,d=0;M<Settings.MaxVias&&d<la[0].features.length;d++){if(a.distanceTo(la[0].features[d].geometry)<0.75)break;
if(b[M]!=null){var e=new OpenLayers.Geometry.Point(b[M].getX(),b[M].getY()),c=M;e.distanceTo(la[0].features[d].geometry)<0.75&&(M++,c=M);e.destroy()}else M++}M=c};T.onComplete=function(a){var b=E.getRouteRequest(),c=b.getViaLocations(),a=new RouteLocation(a.geometry.x,a.geometry.y);a.setCategory();c.splice(M,0,a);for(a=0;a<c.length;a++)if(c[a]===null){c.splice(a,1);a<M&&M--;break}b.setViaLocations(c);for(a in D)D[a].setLocation(c[a]),c[a]!==null&&(K[a].show(),Q[a].show());S.show();j()?(o(),s()):(ea.hide(),
o());E.searchRoute(!1);ua()};var ua=function(){N.handler.layer.setVisibility(!1);T.activate()},J=new OpenLayers.Control.DragFeature(G);J.handlers.drag.click=e.trigger;OL_Map.addControl(J);J.activate();var Y=function(){};J.onStart=function(a){Y._x=a.geometry.x;Y._y=a.geometry.y;o()};J.onComplete=function(a){var b=E.getRouteRequest(),c=b.getStartLocation(),d=b.getEndLocation(),e=b.getViaLocations(),f=b=null;if(c.getX()==Y._x&&c.getY()==Y._y)b=Z,c.setX(a.geometry.x),c.setY(a.geometry.y);else if(d.getX()==
Y._x&&d.getY()==Y._y)b=aa,d.setX(a.geometry.x),d.setY(a.geometry.y);else for(var g in e)if(e[g]!==null&&e[g].getX()==Y._x&&e[g].getY()==Y._y){f=g;b=D[g];e[g].setX(a.geometry.x);e[g].setY(a.geometry.y);break}if(b!==null)c=new RouteLocation(a.geometry.x,a.geometry.y),c.setCategory(RouteLocation.CATEGORY_POINT),ja=a.geometry.x,ka=a.geometry.y,f!==null&&b===D[f]?b.setLocation(c):(b.setRouteLocation(c),KLERO.UTIL.reverseGeocode(a.geometry.x,a.geometry.y,new r(a.geometry.x,a.geometry.y,b.setRouteLocation)));
J.deactivate();E.searchRoute(!1);J.activate();j()&&s()};C||(ea.hide(),o());R||S.hide();J.onEnter=function(){o();d(OL_Map.viewPortDiv).addClass("olControlDragFeatureOver")};J.onLeave=function(){d(OL_Map.viewPortDiv).removeClass("olControlDragFeatureOver");j()&&s()};ca.events.register("snap",null,function(a){a.layer!=G?N.handler.layer.setVisibility(!0):T.deactivate()});ca.events.register("unsnap",null,ua);z=new OpenLayers.Layer.Vector("Crosshair",{renderers:["SVG2","VML","Canvas"]});OL_Map.addLayer(z);
var pa=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.MAP_START_X,a.MAP_START_Y),null,{pointRadius:0,externalGraphic:"css/img/mapCenter.gif",graphicWidth:16,graphicHeight:16,graphicXOffset:-8,graphicYOffset:-8});z.addFeatures(pa);z.drawFeature(pa);OL_Map.events.register("move",null,function(){var a=OL_Map.getCenter(),a=OL_Map.getViewPortPxFromLonLat(a);pa.move(a);o();J.deactivate();return!0});OL_Map.events.register("moveend",null,function(){j()&&s();J.activate();return!0});d("#PoiFrameToggleButton").click(function(){d("#PoiFrame").toggleClass("PoiFrameToggled");
d("#PoiFrame").toggleClass("PoiFrameUnToggled")});e=new PoiFrame(d("#PoiFrameContent").get(0),y);I=[];a=null;for(q=0;q<v.length;q++)z=new PoiCategory(v[q].id,v[q].number,v[q].name,v[q].iconFilename),z.getId()===null&&a!==null&&(a=a.getParentCategory()),a===null?I.push(z):a.addChildCategory(z),z.getId()===null&&(a=z);e.setPoiContent(I);e.addSelectionChangeCBF(W);e.addSelectionChangeCBF(ba);d("#UserPoiFrameToggleButton").click(function(){d("#UserPoiFrame").toggleClass("UserPoiFrameToggled");d("#UserPoiFrame").toggleClass("UserPoiFrameUnToggled")});
v=[];i=new PoiFrame(d("#UserPoiFrameContent").get(0),i);a=null;for(q=0;q<u.length;q++)z=new PoiCategory(u[q].id,u[q].number,u[q].name,u[q].iconFilename),z.getId()===null&&a!==null&&(a=a.getParentCategory()),a===null?v.push(z):a.addChildCategory(z),z.getId()===null&&(a=z);i.setPoiContent(v);i.addSelectionChangeCBF(W);i.addSelectionChangeCBF(ba);d("#RoiFrameToggleButton").click(function(){d("#RoiFrame").toggleClass("RoiFrameToggled");d("#RoiFrame").toggleClass("RoiFrameUnToggled")});u=new RoiFrame(d("#RoiFrameContent").get(0),
F);v=[];a=null;for(q=0;q<c.length;q++)i=new RoiCategory(c[q].id,c[q].name),z=new Roi(c[q].id,c[q].wmsType,{minX:c[q].minX,minY:c[q].minY,maxX:c[q].maxX,maxY:c[q].maxY},c[q].lineWidth,c[q].lineColor),i.getId()===null&&a!==null&&(a=a.getParentCategory()),a===null?v.push(i):a.addChildCategory(i),i.getId()===null?a=i:i.addRoi(z);u.setRoiContent(v);u.addSelectionChangeCBF(W);u.addSelectionChangeCBF(ba);d("#WeatherFrameToggleButton").click(function(){d("#WeatherFrame").toggleClass("WeatherFrameToggled");
d("#WeatherFrame").toggleClass("WeatherFrameUnToggled")});d("#LinksFrameToggleButton").click(function(){d("#LinksFrame").toggleClass("LinksFrameToggled");d("#LinksFrame").toggleClass("LinksFrameUnToggled")});d("#SearchInfoButton").hover(function(){d(this).removeClass().addClass("InfoButtonMouseOver")},function(){d(this).removeClass().addClass("InfoButton")});d("#SearchInfoButton").click(function(){var a=d("#SearchInfoFrame");if(a.is(":hidden")){var b=d("#SearchInfoFramePlaceHolder");a.css({position:"absolute",
"z-index":255,top:b.offset().top+"px",left:b.offset().left+"px"});a.show()}else a.hide()});d("#SearchInfoFrameCloseButton").click(function(){d("#SearchInfoFrame").hide()});d("#PoiInfoButton").hover(function(){d(this).removeClass().addClass("InfoButtonMouseOver")},function(){d(this).removeClass().addClass("InfoButton")});d("#PoiInfoButton").click(function(){var a=d("#PoiInfoFrame");if(a.is(":hidden")){var b=d("#PoiInfoFramePlaceHolder");a.css({position:"absolute","z-index":255,top:b.offset().top+"px",
left:b.offset().left+"px"});a.show()}else a.hide()});d("#PoiInfoFrameCloseButton").click(function(){d("#PoiInfoFrame").hide()});d("#RoiInfoButton").hover(function(){d(this).removeClass().addClass("InfoButtonMouseOver")},function(){d(this).removeClass().addClass("InfoButton")});d("#RoiInfoButton").click(function(){var a=d("#RoiInfoFrame");if(a.is(":hidden")){var b=d("#RoiInfoFramePlaceHolder");a.css({position:"absolute","z-index":255,top:b.offset().top+"px",left:b.offset().left+"px"});a.show()}else a.hide()});
d("#RoiInfoFrameCloseButton").click(function(){d("#RoiInfoFrame").hide()});d("#DownloadRoutesButton").hover(function(){d(this).removeClass().addClass("DownloadRoutesButtonMouseOver")},function(){d(this).removeClass().addClass("DownloadRoutesButton")});d("#DownloadRoutesButton").click(function(){var a=d("#DownloadRoutesFrame");if(a.is(":hidden")){var b=d("#DownloadRoutesFramePlaceHolder");a.css({position:"absolute","z-index":255,top:b.offset().top+"px",left:b.offset().left+"px"});a.show()}else a.hide()});
d("#DownloadRoutesFrameCloseButton").click(function(){d("#DownloadRoutesFrame").hide()});c=new n.ButtonStyleManager(Settings.EmailLinkButton);n=new n.Button(d("#EmailLinkButton").get(0),n.Button.STATE.ENABLED);c.addButton(n);d("#EmailLinkFrameCloseButton").click(function(){d("#EmailLinkFrame").hide()});n.addMouseClickCBF(function(){var a=d("#SendForm");a.empty();a.attr("action","emaillinkpage.php");a.attr("target","emaillinkiframe");a.attr("method","post");var b=d("<div>").appendTo(a),c=d("<input>");
c.attr("type","hidden");c.attr("name","url");c.attr("value",window.location.href);b.append(c);c=d("<input>");c.attr("type","hidden");c.attr("name","checksum");c.attr("value",window.location.href.length);b.append(c);b=d("#EmailLinkFrame");c=d("#"+Settings.Map.placeHolderId);b.css({position:"absolute","z-index":255,top:c.offset().top+"px",left:c.offset().left+"px"});b.show();a.get(0).submit()});var qa=d("#TransportTypeInputField").get(0);qa.onchange=function(){switch(d(qa).val()){case "walking":urlHandler.setParam("transporttype",
"walk");break;case "cycling":urlHandler.setParam("transporttype","cycle");break;default:urlHandler.setParam("transporttype",null)}};(function(a){a=a.getParam("transporttype");switch(a){case "walk":a="walking";break;case "cycle":a="cycling";break;default:a="cycling"}d(qa).val(a)})(urlHandler);var ra=d("#RoutingMethodInputField").get(0);ra.onchange=function(){switch(d(ra).val()){case "prefercyclepaths":urlHandler.setParam("routingmethod","cyclepaths");break;case "prefertarmac":urlHandler.setParam("routingmethod",
"tarmac");break;case "prefersand":urlHandler.setParam("routingmethod","sand");break;case "shortest":urlHandler.setParam("routingmethod","shortest");break;default:urlHandler.setParam("routingmethod",null)}};(function(a){a=a.getParam("routingmethod");switch(a){case "cyclepaths":a="prefercyclepaths";break;case "tarmac":a="prefertarmac";break;case "sand":a="prefersand";break;case "shortest":a="shortest";break;default:a="prefercyclepaths"}d(ra).val(a)})(urlHandler);var ma={width:0,height:0},na=function(){var a=
getMapDimensions();if(a.width!=ma.width||a.height!=ma.height){p.css({width:a.width+"px",height:a.height+"px"});var b=a.width,c=a.height;d("#"+Settings.Map.placeHolderId).css({width:b+"px",height:c+"px"});OL_Map.updateSize();oa.updateDimensions(a.width,200);ma={width:a.width,height:a.height}}},ia=null;window.onresize=function(){ia!==null&&(clearTimeout(ia),ia=null);ia=setTimeout(function(){ia=null;na()},500)};b!==null?Z.setRouteLocation(b):f!==null&&Z.setInput(f);g!==null?aa.setRouteLocation(g):h!==
null&&aa.setInput(h);b!==null&&g!==null&&(k===null?E.searchRoute(!0):E.searchRoute(!1));i=getMapDimensions();ma={width:i.width,height:i.height};oa.updateDimensions(i.width,200);urlHandler.addHashChangeCBF(function(){window.location.reload?window.location.reload():window.location.href=window.location.href});W();ba()}
function initService(c,a){function b(a){var b=h.Point.COORDINATE_SYSTEM;return a.getCoordinateSystem()===b.INTERNAL?{x:a.getX(),y:a.getY()}:a.getCoordinateSystem()===b.KKJ3?{x:a.getX(),y:a.getY()}:a.getCoordinateSystem()===b.WGS84?LBS.COORDINATECONVERTER.WGS84ToKKJ3(a.getX(),a.getY()):{x:a.getX(),y:a.getY()}}function f(a,c){function d(a){a===null||a.length<1?f(null):a.length==1?f(a[0]):f(null)}function e(a){a.setCategory(RouteLocation.CATEGORY_POINT);f(a)}var f=c,g=urlHandler.getLocation(a);g===null?
(g=urlHandler.getParam(a),g===null||g.length<3?f(null):KLERO.UTIL.geocode(g,2,d)):g instanceof h.Point?(g=b(g),KLERO.UTIL.reverseGeocode(g.x,g.y,e)):g instanceof h.NamedLocation?KLERO.UTIL.geocode(g.getName(),2,d):f(null)}function g(){if(n===!0&&l===!0&&v===!0){if(r!==null&&j!==null&&d===null)k.MAP_START_X=r.getX(),k.MAP_START_Y=r.getY();a(c,k,r,m,j,o,s,d)}}var h=LBS.STATESAVER,e=Settings.Map,k={};k.MAP_START_X=e.initialCenter.x;k.MAP_START_Y=e.initialCenter.y;k.MAP_INI_ZOOM=e.initialZoom;k.MAP_MIN_ZOOM=
e.minZoom;k.MAP_MAX_ZOOM=e.maxZoom;e=urlHandler.getParam("mapzoom");if(e!==null&&(e=parseInt(e),isNaN(e)===!1&&e>=k.MAP_MIN_ZOOM&&e<=k.MAP_MAX_ZOOM))k.MAP_INI_ZOOM=e;var r=null,j=null,m=null,o=null,s=null,d=null,n=!1,l=!1,v=!1;f("mapcenter",function(a){if(a!==null)k.MAP_START_X=a.getX(),k.MAP_START_Y=a.getY(),d=a;n=!0;g()});e=urlHandler.getLocation("from");m=e!==null&&e instanceof h.NamedLocation?e.getName():urlHandler.getParam("from");f("from",function(a){r=a;l=!0;g()});e=urlHandler.getLocation("to");
o=e!==null&&e instanceof h.NamedLocation?e.getName():urlHandler.getParam("to");f("to",function(a){j=a;v=!0;g()});e=urlHandler.getLocationArray("via");if(e!==null){var s=[],u;for(u in e){var p=e[u];p!==null?(p=new RouteLocation(p.getX(),p.getY()),p.setCategory(RouteLocation.CATEGORY_POINT),s.push(p)):s.push(null)}}}
function getMapDimensions(){var c=jQuery,a=c(window).width(),b=c(window).height();a-=c("#"+Settings.Map.placeHolderId).offset().left;c=b-c("#"+Settings.Map.placeHolderId).offset().top;b=Settings.Map.dimensions;fullScreenMap==!1&&(a-=b.marginRight,c-=b.marginBottom);a<b.minWidth?a=b.minWidth:a>b.maxWidth&&(a=b.maxWidth);c<b.minHeight?c=b.minHeight:c>b.maxHeight&&(c=b.maxHeight);return{width:a,height:c}};

