var JSON=function(){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},s={'boolean':function(x){return String(x);},number:function(x){return isFinite(x)?String(x):'null';},string:function(x){if(/["\\\x00-\x1f]/.test(x)){x=x.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}c=b.charCodeAt();return '\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);});}return '"'+x+'"';},object:function(x){if(x){var a=[],b,f,i,l,v;if(x instanceof Array){a[0]='[';l=x.length;for(i=0;i='0'&&ch<='9'){n+=ch;next();}if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}}if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();}while(ch>='0'&&ch<='9'){n+=ch;next();}}v= +n;if(!isFinite(v)){}else{return v;}};function word(){switch(ch){case 't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;}break;case 'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;}break;case 'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;}break;}error("Syntax error");};function value(){white();switch(ch){case '{':return object();case '[':return array();case '"':return string();case '-':return number();default:return ch>='0'&&ch<='9'?number():word();}};return value();}};}();var myMap=null;var trafficTool=null;var layer=null;function Init(){telenavis.constants.minZoom=1;telenavis.constants.maxZoom=12;telenavis.constants.bb=new telenavis.Rect(2156588.5,4059213.125,3298548.75,5201173.375);var center=new telenavis.WorldPoint(23.752774,37.97707,telenavis.Projector.WGSSrid);myMap=new telenavis.jsMap("map","mapViewer",center,6);myMap.initialize();telenavis.Utils.initialize(myMap);layer=new telenavis.Layer('customLayer',4);myMap.addLayer(layer);trafficTool=new telenavis.Tools.TrafficTool(myMap);myMap.centerCross(false);myMap.contextMenu.getMenuItem('CreateRoute').onRoute=showRouteInstructions;showHideTraffic();telenavis.constants.maxPinsInView=1000;var myGeocoder=new telenavis.Utils.GeocodingControl('myGeocoder');myGeocoder.renderControl('geocode');myGeocoder.onAddressSelected=showGeocodingOnMap;telenavis.Routing.RouteStartMenuItem.onRouteStartSet=onRouteStartSet;telenavis.Routing.RouteEndMenuItem.onRouteEndSet=onRouteEndSet;var myGeocoderOrigin=new telenavis.Utils.GeocodingControl('myGeocoderOrigin');myGeocoderOrigin.renderControl('geocodeOrigin');myGeocoderOrigin.onAddressSelected=showRouteStartOnMap;var myGeocoderDestination=new telenavis.Utils.GeocodingControl('myGeocoderDestination');myGeocoderDestination.renderControl('geocodeDestination');myGeocoderDestination.onAddressSelected=showRouteEndOnMap;initializeFirstComboBox();setTimeout(updateEvents,500);setTimeout(updateRoutes,1000);RoutingInProgress=false;};function switchMenus(targetMenus){if(targetMenus=='Maps'){$('MapsLeft').style.visibility='Visible';$('MapsBottom').style.visibility='Visible';$('TrafficLeft').style.visibility='Hidden';$('TrafficBottom').style.visibility='Hidden';$('MapsLink').style.fontWeight='bold';$('TrafficLink').style.fontWeight='Normal';updatePOIs('false');showHideTraffic();}else if(targetMenus=='Traffic'){$('MapsLeft').style.visibility='Hidden';$('MapsBottom').style.visibility='Hidden';$('TrafficLeft').style.visibility='Visible';$('TrafficBottom').style.visibility='Visible';$('MapsLink').style.fontWeight='Normal';$('TrafficLink').style.fontWeight='bold';cleanMap();showHideTraffic();}};function updateTrafficData(){updateRoutes();updateEvents();};function cleanMap(){var customLayerIdx=myMap.getLayerIndex("customLayer");if(customLayerIdx> -1){var customLayer=myMap.getLayersArray()[customLayerIdx];var pins=customLayer.getPinsArray();var polylines=customLayer.getPolylinesArray();for(i=pins.length-1;i>=0;i--){customLayer.removePin(pins[i].getId());}for(var i=polylines.length-1;i>=0;i--){polylines.removePolyline(polylines[i].getId());}myMap.removeLayer("customLayer");}};function addPin(id,lyrName,worldPoint,imgSrc,hotspot,tip,showRouteFromTo,header,content){var lyrIdx=myMap.getLayerIndex(lyrName);if(lyrIdx== -1){lyr=new telenavis.Layer(lyrName,3);myMap.addLayer(lyr);}else{lyr=myMap.getLayersArray()[lyrIdx];}lyr.removePin(id);var pin=new telenavis.Pin(id);var pt=worldPoint;pin.setWorldPos(pt);pin.setImageSrc(imgSrc);pin.setHotspot(hotspot);pin.setTip(tip);if(showRouteFromTo){pin.showRouteFromTo=showRouteFromTo;}if(content!==null&&content!==""){pin.onClick=showBalloon;pin.header=header;pin.content=content;}lyr.addPin(pin);};function showGeocodingOnMap(resp){if(resp.position!==null){myMap.moveTo(resp.position,11);}addPin('geocodeResult','customLayer',resp.position,'images/et.png',new telenavis.Point(8,8),resp.address,true,'Γεωκωδικοποίηση',resp.address);};function showRouteStartOnMap(resp){if(resp.position!==null){myMap.contextMenu.items["RouteStart"].onClick(resp.position);var addressParts=resp.address.split(",");if(addressParts.length==3){$("myGeocoderOrigin.road").value=trim(addressParts[0]);$("myGeocoderOrigin.council").value=trim(addressParts[1]);$("myGeocoderOrigin.state").value=trim(addressParts[2]);}else if(addressParts.length==4){$("myGeocoderOrigin.road").value=trim(addressParts[0]);$("myGeocoderOrigin.council").value=trim(addressParts[2]);$("myGeocoderOrigin.state").value=trim(addressParts[3]);}if(telenavis.Routing.routeEnd==null){myMap.moveTo(resp.position,telenavis.constants.maxZoom-2);}}};function showRouteEndOnMap(resp){if(resp.position!==null){myMap.contextMenu.items["RouteEnd"].onClick(resp.position);var addressParts=resp.address.split(",");if(addressParts.length==3){$("myGeocoderDestination.road").value=trim(addressParts[0]);$("myGeocoderDestination.council").value=trim(addressParts[1]);$("myGeocoderDestination.state").value=trim(addressParts[2]);}else if(addressParts.length==4){$("myGeocoderDestination.road").value=trim(addressParts[0]);$("myGeocoderDestination.council").value=trim(addressParts[2]);$("myGeocoderDestination.state").value=trim(addressParts[3]);}if(telenavis.Routing.routeStart==null){myMap.moveTo(resp.position,telenavis.constants.maxZoom-2);}}};function onRouteStartSet(pt){document.getElementById("myGeocoderOrigin.road").value="X: "+pt.x.toString().substr(0,7)+", Y: "+pt.y.toString().substr(0,7);document.getElementById("myGeocoderOrigin.council").value="";document.getElementById("myGeocoderOrigin.state").value="";layer.removePin("routeStart");};function onRouteEndSet(pt){document.getElementById("myGeocoderDestination.road").value="X: "+pt.x.toString().substr(0,7)+", Y: "+pt.y.toString().substr(0,7);document.getElementById("myGeocoderDestination.council").value="";document.getElementById("myGeocoderDestination.state").value="";layer.removePin("routeEnd");};function setRouteStart(pt){if(pt.position!==null){myMap.contextMenu.items["RouteStart"].onClick(pt);}};function setRouteEnd(pt){if(pt.position!==null){myMap.contextMenu.items["RouteEnd"].onClick(pt);}};function switchOriginDestination(){var rd1=$("myGeocoderOrigin.road").value;var council1=$("myGeocoderOrigin.council").value;var state1=$("myGeocoderOrigin.state").value;var rd2=$("myGeocoderDestination.road").value;var council2=$("myGeocoderDestination.council").value;var state2=$("myGeocoderDestination.state").value;var ptStart=telenavis.Routing.routeStart;var ptEnd=telenavis.Routing.routeEnd;telenavis.Routing.routeStart=null;telenavis.Routing.routeEnd=null;myMap.contextMenu.items["RouteStart"].onClick(ptEnd);myMap.contextMenu.items["RouteEnd"].onClick(ptStart);$("myGeocoderOrigin.road").value=rd2;$("myGeocoderOrigin.council").value=council2;$("myGeocoderOrigin.state").value=state2;$("myGeocoderDestination.road").value=rd1;$("myGeocoderDestination.council").value=council1;$("myGeocoderDestination.state").value=state1;};var RoutingInProgress;function RoutingTypeChange(newType){if(RoutingInProgress===true){alert('Δρομολόγηση σε εξέλιξη. Παρακαλώ ξαναδοκιμάστε...');}else{telenavis.Routing.routingType=newType;myMap.contextMenu.items["CreateRoute"].onClick();RoutingInProgress=true;}};function OptimizationTypeChange(newType){if(RoutingInProgress===true){alert('Δρομολόγηση σε εξέλιξη. Παρακαλώ ξαναδοκιμάστε...');}else{telenavis.Routing.routeOptimizationType=newType;myMap.contextMenu.items["CreateRoute"].onClick();RoutingInProgress=true;}};function showRouteInstructions(instructions,distance,minutes){RoutingInProgress=false;var bounds=getRouteBounds(instructions);var centerX=(bounds.minX+bounds.maxX)/2;var centerY=(bounds.minY+bounds.maxY)/2;var center=new telenavis.WorldPoint(centerX,centerY,4326);var fittingZoom=getFittingZoom(bounds);myMap.moveTo(center,fittingZoom);document.getElementById("mapInstructionsTitle").style.display='block';document.getElementById("LegendDiv").style.display='none';document.getElementById("routeDetails").innerHTML="Απόσταση="+distance.toString()+" χλμ. Χρόνος="+minutes.toString()+" λεπτά ";var startX,startY,endX,endY;startX=instructions[0].point.x;startY=instructions[0].point.y;endX=instructions[instructions.length-1].point.x;endY=instructions[instructions.length-1].point.y;$("lnkPrint").href="PrintPreview.aspx"+"?sLnx="+Enc(startX.toString())+"&sLty="+Enc(startY.toString())+"&eLnx="+Enc(endX.toString())+"&eLty="+Enc(endY.toString())+"&tr="+(trafficTool.state);};function getRouteBounds(instructions){var ptMin=new telenavis.Point(instructions[0].point.x,instructions[0].point.y);var ptMax=new telenavis.Point(instructions[0].point.x,instructions[0].point.y);for(var i=0;ihrzMapDistance){while(hrzRouteDistance>hrzMapDistance){hrzMapDistance*=2;hrzFittingZoom-=1;}}else if(hrzRouteDistancevrtMapDistance){while(vrtRouteDistance>vrtMapDistance){vrtMapDistance*=2;vrtFittingZoom-=1;}}else if(vrtRouteDistance -1){myMap.removeLayer('routePolyline');}lyrIdx=myMap.getLayerIndex('routePins');if(lyrIdx> -1){myMap.removeLayer('routePins');}$("myGeocoderOrigin.road").value="";$("myGeocoderOrigin.council").value="";$("myGeocoderDestination.road").value="";$("myGeocoderDestination.council").value="";$("mapInstructionsTitle").style.display='none';$("LegendDiv").style.display='block';};function Enc(str){var aBef="0123456789.,";var aAft="qwertyuiopab";var encStr="";for(i=0;i -1){encStr+=aAft.charAt(aBef.indexOf(str.charAt(i)));}else{encStr+=str.charAt(i);}}return encStr;};function updatePOIs(cleanMapFirst){var SrvPxy=new ServerProxy(1,"POIProxy.aspx");var params=[];var arr=[];var el;var i=0;if(document.getElementById("Αυτοκίνητο").checked){arr[i]="Αυτοκίνητο";i++;}if(document.getElementById("Συγκοινωνίες").checked){arr[i]="Συγκοινωνίες";i++;}if(document.getElementById("Υπηρεσίες Ασφάλειας").checked){arr[i]="Υπηρεσίες Ασφάλειας";i++;}if(document.getElementById("Υγεία").checked){arr[i]="Υγεία";i++;}if(document.getElementById("Δημόσιες Υπηρεσίες").checked){arr[i]="Δημόσιες Υπηρεσίες";i++;}if(document.getElementById("Θρησκεία").checked){arr[i]="Θρησκεία";i++;}if(document.getElementById("Πλατείες").checked){arr[i]="Πλατείες";i++;}if(document.getElementById("Πολιτισμός").checked){arr[i]="Πολιτισμός";i++;}if(!cleanMapFirst){cleanMap();}if(i>0){document.getElementById("POIUpdateWait").style.visibility="visible";params.arr=JSON.stringify(arr);SrvPxy.sendRequest(params,PoisJSNResult);}};function PoisJSNResult(state){var stateObj;stateObj=JSON.parse(state);var point;var Pin;if(stateObj.length==1){if(stateObj[0].POI_ID=="-1"){document.getElementById("POIUpdateWait").style.visibility="hidden";alert(HTMLInfo);return;}}for(var x=0;x=0;i--){div.removeChild(div.childNodes[i]);}div.appendChild(divRoutes);}};function updateEvents(){var SrvPxy=new ServerProxy(1,"TrafficProxy.aspx");var params=[];var arr=[];arr[0]='Events';params.arr=JSON.stringify(arr);SrvPxy.sendRequest(params,TrafficEventsJSNResult);};function TrafficEventsJSNResult(state){var stateObj=JSON.parse(state);$('EventsDiv').innerHTML=stateObj;};function showHideTraffic(){if(trafficTool.state===0){trafficTool.showTraffic();}else{trafficTool.hideTraffic();}};function showBalloon(pin){var balloonLayer=null;var balloonLayerIdx=myMap.getLayerIndex("balloonLayer");if(balloonLayerIdx== -1){balloonLayer=new telenavis.Layer("balloonLayer",100);myMap.addLayer(balloonLayer);}else{balloonLayer=myMap.getLayersArray()[balloonLayerIdx];}var pos=pin.getScreenPos();var balloonDiv=document.createElement("div");var spn=null;if(pin.header!==null){spn=document.createElement('span');setCssFloat(spn,"left");var b=document.createElement("b");b.appendChild(document.createTextNode(pin.header));spn.appendChild(b);balloonDiv.appendChild(spn);var img=new Image();img.src='images/close.png';img.title="Κλείσιμο";setCssFloat(img,"right");img.style.cursor="pointer";balloonDiv.appendChild(img);balloonDiv.appendChild(document.createElement("br"));}if(pin.content!==null){spn=document.createElement("spn");spn.innerHTML=pin.content;balloonDiv.appendChild(spn);}if(pin.showRouteFromTo!=null){balloonDiv.appendChild(document.createElement('br'));balloonDiv.appendChild(document.createElement('br'));balloonDiv.appendChild(document.createTextNode("Δρομολόγησέ με:"));balloonDiv.appendChild(document.createElement('br'));var ancFrom=document.createElement("a");ancFrom.href='#';ancFrom.address=pin.getTip();ancFrom.point=pin.getWorldPos();ancFrom.onclick=function(e){stopEventPropagation(e);setRouteStart(this.point);};ancFrom.appendChild(document.createTextNode("Από"));var ancTo=document.createElement("a");ancTo.href='#';ancTo.address=pin.getTip();ancTo.point=pin.getWorldPos();ancTo.onclick=function(e){stopEventPropagation(e);setRouteEnd(this.point);};ancTo.appendChild(document.createTextNode("Προς"));balloonDiv.appendChild(ancFrom);balloonDiv.appendChild(document.createTextNode(" , "));balloonDiv.appendChild(ancTo);}var balloon=balloonLayer.createBalloon(pos,calcDivDimentions(balloonDiv.innerHTML));var div=balloon.getDiv();div.style.fontFamily="tahoma";div.style.fontSize="11px";div.oncontextmenu=function(e){stopEventPropagation(e);return false;};div.appendChild(balloonDiv);};function setCssFloat(el,value){if(isIE()){el.style.styleFloat=value;}else{el.style.cssFloat=value;}};function isIE(){if(navigator.appName=='Microsoft Internet Explorer'){return true;}else{return false;}};function stopEventPropagation(e){e=e?e:window.event;if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}};function calcDivDimentions(divInnerHTML){if(divInnerHTML===null||divInnerHTML===""){return new telenavis.Size(0,0);}var div=document.createElement("div");div.id='divMeasure';div.innerHTML="
"+divInnerHTML+"
";div.style.visibility="hidden";div.style.position="absolute";div.style.left="1000px";div.style.top="0px";div.style.overflow="hidden";document.body.appendChild(div);var w=document.getElementById("divMeasure").offsetWidth;var h=document.getElementById("divMeasure").offsetHeight;purge(div);div.parentNode.removeChild(div);return new telenavis.Size(w+5,h+5);};function trim(str){return str.replace(/^\s+|\s+$/g,"");};function purge(d){var a=d.attributes,i,l,n;if(a){l=a.length;for(i=0;i0;m--)son.options[m]=null;son.options[0]=new Option(displaywhenempty,valuewhenempty);i=i+1;}}var stringa='data';i=0;_t=eval("typeof(document.getElementById('combo_"+i+"'))!='undefined'");while(_t&&document.getElementById("combo_"+i)!=null){eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex");if(i==currentbox)break;i=i+1;}var following=parseInt(currentbox)+1;_t=eval("typeof(document.getElementById('combo_"+following+"'))!='undefined'");if(_t&&document.getElementById("combo_"+following)!=null){son=document.getElementById("combo_"+following);stringa=stringa+"_";i=0;while((eval("typeof("+stringa+i+")!='undefined'"))||(i==0)){if((i==0)&&eval("typeof("+stringa+"0)=='undefined'"))if(eval("typeof("+stringa+"1)=='undefined'"))eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)");else eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)");else eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)");i++;}i=1;combostatus='';cstatus=stringa.split("_");while(cstatus[i]!=null){combostatus=combostatus+cstatus[i];i=i+1;}return combostatus;}}function ServerProxy(id,url){if(!id||id==""){throw new Error("Invalid id.");}var callbackFunction=null;this.serverUrl=url;this.id=id;var buildParamsString=function(params){var ret="";for(var paramName in params){var cparam=params[paramName].replace(/&/,"%26");ret+=paramName+"="+params[paramName]+"&";}if(ret.length>0){if(ret.charAt(ret.length-1)=="&"){ret=ret.substr(0,ret.length-1);}}return ret;};var getXMLHttpObject=function(){var x=null;if(window.XMLHttpRequest){x=new XMLHttpRequest();}else if(window.ActiveXObject){x=new ActiveXObject("Microsoft.XMLHTTP");}return x;};this.sendXMLHttpRequest=function(method,params,callbackF,url,contentType){var requestParams=buildParamsString(params);var requestUrl=url;if(callbackF)callbackFunction=callbackF;if(!contentType){contentType="application/x-www-form-urlencoded"};switch(method){case "POST":break;case "GET":requestUrl+="?"+requestParams;requestParams=null;break;default:throw new Error("Valid values for method are POST or GET");break;}var xmlHttp=getXMLHttpObject();this.cancelXMLHttpRequest=function(){xmlHttp.onreadystatechange=null;};xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(xmlHttp.status==200){callbackFunction(xmlHttp.responseText);}else{throw new Error("Could not communicate with server. Server's response:"+xmlHttp.responseText);}}};xmlHttp.open(method,requestUrl,true);xmlHttp.setRequestHeader("Content-Type",contentType);xmlHttp.send(requestParams);};this.sendJSRequest=function(params,callbackF,fParamsString,url){var requestParams=buildParamsString(params);var headTag=document.getElementsByTagName("head").item(0);var scriptTag=document.getElementById(this.id);if(scriptTag)scriptTag.parentNode.removeChild(scriptTag);scriptTag=document.createElement("script");requestParams+="&callback="+callbackF;requestParams+="&fparams="+fParamsString;requestParams+="&time="+new Date().getTime();if(!url){url=this.serverUrl;}var src=url+"?"+requestParams;scriptTag.setAttribute("src",src);scriptTag.setAttribute("id",this.id);headTag.appendChild(scriptTag);};this.sendRequest=function(params,callbackF){var method=this.sendPost==true?"POST":"GET";method="POST";var url=this.serverUrl?this.serverUrl:null;if(!url)throw new Error("You need to set the serverUrl property of the Server Proxy.");this.sendXMLHttpRequest(method,params,callbackF,this.serverUrl);}};