var defaultCity="Valitse paikkakunta",defaultHome="Koti";
cityJson={label:"name",identifier:"value",items:[{value:"0,0",name:defaultCity},{value:"61.169,23.858",name:"Akaa"},{value:"63,23.817",name:"Alajärvi"},{value:"64.167,24.3",name:"Alavieska"},{value:"62.583,23.617",name:"Alavus"},{value:"61.173,25.549",name:"Asikkala"},{value:"60.53,25.599",name:"Askola"},{value:"60.646,22.577",name:"Aura"},{value:"60.413,21.047",name:"Brändö"},{value:"60.213,19.614",name:"Eckerö"},{value:"62.083,28.933",name:"Enonkoski"},{value:"68.383,23.633",name:"Enontekiö"},{value:"60.209,24.658",name:"Espoo"},{value:"61.133,22.133",name:"Eura"},{value:"61.2,21.733",name:"Eurajoki"},{value:"63.367,23.483",name:"Evijärvi"},{value:"60.228,19.995",name:"Finström"},{value:"60.819,23.621",name:"Forssa"},{value:"60.03,20.392",name:"Föglö"},{value:"60.383,19.85",name:"Geta"},{value:"63.752,25.329",name:"Haapajärvi"},{value:"64.145,25.377",name:"Haapavesi"},{value:"65.01,24.715",name:"Hailuoto"},{value:"63.467,24.167",name:"Halsua"},{value:"60.564,27.201",name:"Hamina"},{value:"60.217,19.75",name:"Hammarland"},{value:"62.385,26.431",name:"Hankasalmi"},{value:"59.833,22.95",name:"Hanko"},{value:"61.316,22.135",name:"Harjavalta"},{value:"61.583,26.018",name:"Hartola"},{value:"61.067,24.383",name:"Hattula"},{value:"65.183,25.35",name:"Haukipudas"},{value:"60.783,25",name:"Hausjärvi"},{value:"61.205,26.04",name:"Heinola"},{value:"62.433,28.6",name:"Heinävesi"},{value:"60.17,24.931",name:"Helsinki"},{value:"61.642,26.788",name:"Hirvensalmi"},{value:"60.987,25.537",name:"Hollola"},{value:"61.983,22.267",name:"Honkajoki"},{value:"61.178,22.689",name:"Huittinen"},{value:"60.933,23.367",name:"Humppila"},{value:"64.677,28.51",name:"Hyrynsalmi"},{value:"60.633,24.876",name:"Hyvinkää"},{value:"61.03,25.157",name:"Hämeenkoski"},{value:"61.633,23.2",name:"Hämeenkyrö"},{value:"61,24.45",name:"Hämeenlinna"},{value:"65.317,25.367",name:"Ii"},{value:"63.567,27.183",name:"Iisalmi"},{value:"60.89,26.35",name:"Iitti"},{value:"61.772,23.067",name:"Ikaalinen"},{value:"62.732,22.578",name:"Ilmajoki"},{value:"62.667,30.917",name:"Ilomantsi"},{value:"61.19,28.774",name:"Imatra"},{value:"68.9,27.017",name:"Inari"},{value:"60.05,24.017",name:"Inkoo"},{value:"62.117,21.967",name:"Isojoki"},{value:"63,22.317",name:"Isokyrö"},{value:"62.49,22.764",name:"Jalasjärvi"},{value:"60.9,24.6",name:"Janakkala"},{value:"62.6,29.767",name:"Joensuu"},{value:"60.803,23.483",name:"Jokioinen"},{value:"60.155,19.958",name:"Jomala"},{value:"62.183,27.833",name:"Joroinen"},{value:"61.748,26.129",name:"Joutsa"},{value:"63.064,28.32",name:"Juankoski"},{value:"63.246,29.251",name:"Juuka"},{value:"61.783,24.45",name:"Juupajoki"},{value:"61.899,27.863",name:"Juva"},{value:"62.233,25.733",name:"Jyväskylä"},{value:"61.817,22.7",name:"Jämijärvi"},{value:"61.867,25.2",name:"Jämsä"},{value:"60.478,25.083",name:"Järvenpää"},{value:"60.391,22.376",name:"Kaarina"},{value:"62.976,28.483",name:"Kaavi"},{value:"64.233,27.683",name:"Kajaani"},{value:"64.25,23.95",name:"Kalajoki"},{value:"61.463,24.076",name:"Kangasala"},{value:"61.983,26.633",name:"Kangasniemi"},{value:"61.803,22.39",name:"Kankaanpää"},{value:"62.967,25.25",name:"Kannonkoski"},{value:"63.904,23.896",name:"Kannus"},{value:"62.3,21.7",name:"Karijoki"},{value:"60.25,23.717",name:"Karjalohja"},{value:"60.532,24.219",name:"Karkkila"},{value:"62.867,24.783",name:"Karstula"},{value:"62.133,22.567",name:"Karvia"},{value:"62.376,21.231",name:"Kaskinen"},{value:"62.424,22.17",name:"Kauhajoki"},{value:"63.1,23.083",name:"Kauhava"},{value:"60.212,24.726",name:"Kauniainen"},{value:"63.533,23.7",name:"Kaustinen"},{value:"63.183,26.367",name:"Keitele"},{value:"65.733,24.567",name:"Kemi"},{value:"66.719,27.425",name:"Kemijärvi"},{value:"65.817,24.533",name:"Keminmaa"},{value:"60.163889,22.727778",name:"Kemiönsaari"},{value:"64.917,25.5",name:"Kempele"},{value:"60.4,25.117",name:"Kerava"},{value:"61.917,29.283",name:"Kerimäki"},{value:"61.893,29.834",name:"Kesälahti"},{value:"62.257,24.706",name:"Keuruu"},{value:"62.2,23.183",name:"Kihniö"},{value:"61.45,22.583",name:"Kiikoinen"},{value:"65.133,25.733",name:"Kiiminki"},{value:"63.37,24.97",name:"Kinnula"},{value:"60.117,24.433",name:"Kirkkonummi"},{value:"62.1,30.15",name:"Kitee"},{value:"67.651,24.903",name:"Kittilä"},{value:"63.65,26.617",name:"Kiuruvesi"},{value:"60.967,21.883",name:"Kivijärvi"},{value:"61.25,22.35",name:"Kokemäki"},{value:"63.844,23.128",name:"Kokkola"},{value:"67.331,23.788",name:"Kolari"},{value:"62.617,26.317",name:"Konnevesi"},{value:"62.767,29.85",name:"Kontiolahti"},{value:"60.167,21.833",name:"Korsnäs"},{value:"60.655,23.144",name:"Koski Tl"},{value:"60.46,26.946",name:"Kotka"},{value:"60.867,26.7",name:"Kouvola"},{value:"62.277,21.358",name:"Kristiinankaupunki"},{value:"63.717,23.033",name:"Kruunupyy"},{value:"64.125,29.511",name:"Kuhmo"},{value:"61.567,25.183",name:"Kuhmoinen"},{value:"60.261,20.779",name:"Kumlinge"},{value:"62.9,27.683",name:"Kuopio"},{value:"62.8,23.5",name:"Kuortane"},{value:"62.617,22.417",name:"Kurikka"},{value:"60.55,21.35",name:"Kustavi"},{value:"65.967,29.183",name:"Kuusamo"},{value:"63.033,24.567",name:"Kyyjärvi"},{value:"60.872,25.269",name:"Kärkölä"},{value:"63.98,25.755",name:"Kärsämäki"},{value:"59.933,20.883",name:"Kökar"},{value:"61.117,22.35",name:"Köyliö"},{value:"60.981,25.655",name:"Lahti"},{value:"62.967,22.017",name:"Laihia"},{value:"60.88,21.689",name:"Laitila"},{value:"60.633,26.217",name:"Lapinjärvi"},{value:"63.366,27.392",name:"Lapinlahti"},{value:"63.2,23.633",name:"Lappajärvi"},{value:"61.056,28.189",name:"Lappeenranta"},{value:"62.96,23.03",name:"Lapua"},{value:"62.419,25.953",name:"Laukaa"},{value:"61.598,22.593",name:"Lavia"},{value:"61.05,27.8",name:"Lemi"},{value:"60.071,20.085",name:"Lemland"},{value:"61.317,23.75",name:"Lempäälä"},{value:"62.483,27.783",name:"Leppävirta"},{value:"63.533,24.65",name:"Lestijärvi"},{value:"63.317,30.017",name:"Lieksa"},{value:"60.507,22.451",name:"Lieto"},{value:"64.817,25.4",name:"Liminka"},{value:"62.533,29.367",name:"Liperi"},{value:"60.25,24.083",name:"Lohja"},{value:"60.851,23.043",name:"Loimaa"},{value:"60.713,24.438",name:"Loppi"},{value:"60.456,26.222",name:"Loviisa"},{value:"61.783,25.7",name:"Luhanka"},{value:"64.84,25.19",name:"Lumijoki"},{value:"60.12,20.264",name:"Lumparland"},{value:"63.751,22.745",name:"Luoto"},{value:"60.911,27.568",name:"Luumäki"},{value:"61.365,21.618",name:"Luvia"},{value:"60.302,22.291",name:"Länsi-Turunmaa"},{value:"62.933,21.567",name:"Maalahti"},{value:"63.157,27.304",name:"Maaninka"},{value:"60.1,19.95",name:"Maarianhamina"},{value:"60.817,25.383",name:"Marttila"},{value:"60.567,22.1",name:"Masku"},{value:"63.7,23.183",name:"Merijärvi"},{value:"61.863,21.507",name:"Merikarvia"},{value:"60.667,27.7",name:"Miehikkälä"},{value:"61.683,27.25",name:"Mikkeli"},{value:"64.809,25.991",name:"Muhos"},{value:"62.414,24.801",name:"Multia"},{value:"67.958,23.679",name:"Muonio"},{value:"63.117,21.717",name:"Mustasaari"},{value:"62.133,25.667",name:"Muurame"},{value:"60.678,21.99",name:"Mynämäki"},{value:"60.667,25.85",name:"Myrskylä"},{value:"60.633,25.317",name:"Mäntsälä"},{value:"62.033333,24.616667",name:"Mänttä-Vilppula"},{value:"61.417,26.877",name:"Mäntyharju"},{value:"60.465,22.019",name:"Naantali"},{value:"61.367,22",name:"Nakkila"},{value:"60.944,25.937",name:"Nastola"},{value:"63.212,28.06",name:"Nilsiä"},{value:"63.923,24.958",name:"Nivala"},{value:"61.467,23.5",name:"Nokia"},{value:"60.59,22.08",name:"Nousiainen"},{value:"60.397,23.893",name:"Nummi-Pusula"},{value:"63.544,29.145",name:"Nurmes"},{value:"60.467,24.8",name:"Nurmijärvi"},{value:"62.474,21.336",name:"Närpiö"},{value:"60.8,25.736",name:"Orimattila"},{value:"60.85,22.683",name:"Oripää"},{value:"61.677,24.363",name:"Orivesi"},{value:"64.269,24.818",name:"Oulainen"},{value:"65.017,25.467",name:"Oulu"},{value:"64.933,25.417",name:"Oulunsalo"},{value:"62.727,29.038",name:"Outokumpu"},{value:"61.35,25.283",name:"Padasjoki"},{value:"60.456,22.687",name:"Paimio"},{value:"64.417,27.833",name:"Paltamo"},{value:"61.55,29.5",name:"Parikkala"},{value:"62.017,23.017",name:"Parkano"},{value:"63.601,22.791",name:"Pedersören kunta"},{value:"67.111,27.511",name:"Pelkosenniemi"},{value:"66.796,24",name:"Pello"},{value:"63.217,24.417",name:"Perho"},{value:"61.5,26.483",name:"Pertunmaa"},{value:"62.255,25.19",name:"Petäjävesi"},{value:"62.3,27.133",name:"Pieksämäki"},{value:"63.235,26.758",name:"Pielavesi"},{value:"63.677,22.706",name:"Pietarsaari"},{value:"63.376,25.575",name:"Pihtipudas"},{value:"61.467,23.626",name:"Pirkkala"},{value:"62.857,29.376",name:"Polvijärvi"},{value:"61.698,22.003",name:"Pomarkku"},{value:"61.483,21.783",name:"Pori"},{value:"60.481,25.363",name:"Pornainen"},{value:"60.398,25.669",name:"Porvoo"},{value:"66.11,28.179",name:"Posio"},{value:"65.367,27.001",name:"Pudasjärvi"},{value:"60.65,25.6",name:"Pukkila"},{value:"61.752,29.393",name:"Punkaharju"},{value:"61.117,23.1",name:"Punkalaidun"},{value:"64.872,27.66",name:"Puolanka"},{value:"61.526,28.184",name:"Puumala"},{value:"60.483,26.533",name:"Pyhtää"},{value:"64.47,24.268",name:"Pyhäjoki"},{value:"63.682,25.97",name:"Pyhäjärvi"},{value:"64.102,26.356",name:"Pyhäntä"},{value:"60.951,21.447",name:"Pyhäranta"},{value:"61.333,24.28",name:"Pälkäne"},{value:"60.71,22.61",name:"Pöytyä"},{value:"64.677,24.459",name:"Raahe"},{value:"59.975,23.436111",name:"Raasepori"},{value:"60.483,22.183",name:"Raisio"},{value:"62.067,28.3",name:"Rantasalmi"},{value:"65.93,26.51",name:"Ranua"},{value:"61.134,21.505",name:"Rauma"},{value:"62.633,26.833",name:"Rautalampi"},{value:"63.483,28.3",name:"Rautavaara"},{value:"61.431,29.35",name:"Rautjärvi"},{value:"63.61,24.934",name:"Reisjärvi"},{value:"60.739,24.774",name:"Riihimäki"},{value:"61.507,27.266",name:"Ristiina"},{value:"64.507,28.201",name:"Ristijärvi"},{value:"66.5,25.717",name:"Rovaniemi"},{value:"61.294,28.832",name:"Ruokolahti"},{value:"61.983,24.083",name:"Ruovesi"},{value:"60.533,22.217",name:"Rusko"},{value:"62.317,29.617",name:"Rääkkylä"},{value:"62.708,25.247",name:"Saarijärvi"},{value:"66.833,28.667",name:"Salla"},{value:"60.383,23.133",name:"Salo"},{value:"60.283,20.05",name:"Saltvik"},{value:"61.34748,22.90142",name:"Sastamala"},{value:"60.346,22.69",name:"Sauvo"},{value:"61.195,27.684",name:"Savitaipale"},{value:"61.867,28.883",name:"Savonlinna"},{value:"67.292,28.158",name:"Savukoski"},{value:"62.798,22.832",name:"Seinäjoki"},{value:"63.909,24.515",name:"Sievi"},{value:"61.867,21.833",name:"Siikainen"},{value:"64.833,24.733",name:"Siikajoki"},{value:"64.266667,25.866667",name:"Siikalatva"},{value:"63.074,27.665",name:"Siilinjärvi"},{value:"65.667,25.05",name:"Simo"},{value:"60.367,25.267",name:"Sipoo"},{value:"60.183,24.2",name:"Siuntio"},{value:"67.417,26.599",name:"Sodankylä"},{value:"62.872,24.214",name:"Soini"},{value:"60.617,23.533",name:"Somero"},{value:"63.667,27.517",name:"Sonkajärvi"},{value:"64.133,28.417",name:"Sotkamo"},{value:"60.128,20.668",name:"Sottunga"},{value:"61.79,28.364",name:"Sulkava"},{value:"60.25,20.116",name:"Sund"},{value:"61.317,27.45",name:"Suomenniemi"},{value:"64.883,28.9",name:"Suomussalmi"},{value:"62.631,27.113",name:"Suonenjoki"},{value:"61.506,25.673",name:"Sysmä"},{value:"61.054,22.338",name:"Säkylä"},{value:"61.15,28.05",name:"Taipalsaari"},{value:"65.573,28.233",name:"Taivalkoski"},{value:"60.563,21.618",name:"Taivassalo"},{value:"60.809,23.767",name:"Tammela"},{value:"61.5,23.75",name:"Tampere"},{value:"60.583,22.733",name:"Tarvasjoki"},{value:"62.95,26.75",name:"Tervo"},{value:"66.084,24.811",name:"Tervola"},{value:"62.483,21.733",name:"Teuva"},{value:"62.226,30.333",name:"Tohmajärvi"},{value:"63.778,24.246",name:"Toholampi"},{value:"62.1,26.083",name:"Toivakka"},{value:"65.85,24.183",name:"Tornio"},{value:"60.459,22.25",name:"Turku"},{value:"62.817,28.5",name:"Tuusniemi"},{value:"60.407,25.036",name:"Tuusula"},{value:"64.767,25.65",name:"Tyrnävä"},{value:"62.633,23.817",name:"Töysä"},{value:"61.433,21.883",name:"Ulvila"},{value:"61.083,23.533",name:"Urjala"},{value:"64.761,26.413",name:"Utajärvi"},{value:"69.91,27.018",name:"Utsjoki"},{value:"62.5,25.45",name:"Uurainen"},{value:"63.523,22.528",name:"Uusikaarlepyy"},{value:"60.801,21.411",name:"Uusikaupunki"},{value:"64.561,26.831",name:"Vaala"},{value:"63.1,21.6",name:"Vaasa"},{value:"61.267,24.033",name:"Valkeakoski"},{value:"63.685,28.812",name:"Valtimo"},{value:"60.285,25.05",name:"Vantaa"},{value:"62.317,27.917",name:"Varkaus"},{value:"60.68,21.664",name:"Vehmaa"},{value:"62.933,26.417",name:"Vesanto"},{value:"61.317,23.617",name:"Vesilahti"},{value:"63.467,23.767",name:"Veteli"},{value:"63.747,27.005",name:"Vieremä"},{value:"64.487,24.98",name:"Vihanti"},{value:"60.417,24.333",name:"Vihti"},{value:"63.086,25.866",name:"Viitasaari"},{value:"63.16,23.85",name:"Vimpeli"},{value:"60.584,27.706",name:"Virolahti"},{value:"62.27,23.7",name:"Virrat"},{value:"63.067,22.1",name:"Vähäkyrö"},{value:"60.242,20.378",name:"Vårdö"},{value:"63.15,22.25",name:"Vöyri"},{value:"65.371,25.834",name:"Yli-Ii"},{value:"66.321,23.673",name:"Ylitornio"},{value:"64.083,24.55",name:"Ylivieska"},{value:"61.56,23.582",name:"Ylöjärvi"},{value:"60.804,23.28",name:"Ypäjä"},{value:"62.556,24.096",name:"Ähtäri"},{value:"62.6,25.729",name:"Äänekoski"}]};
function generateUid(){return new Date().getTime().toString(36)
}dojo.provide("adfore.common");
var HELSINKI="1",OULU="2",TAMPERE="3",mobile=false,adforeObj=new Object(),infoXhr=null,weatherXhr=null,currentWeather=null,globalDate=new Date(),trackedEvents=new Array(),xhrsWaiting=new Array(),labels=new Object(),channels=new Object(),bookmarks=new Array(),xhrs=new Array(),cityObjArray={"":""};
Common={getUrlParam:function(b){b=b.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
var a="[\\?&]"+b+"=([^&#]*)";
var d=new RegExp(a);
var c=d.exec(window.location.search);
if(c==null){return null
}else{try{return decodeURIComponent(c[1])
}catch(f){return unescape(c[1])
}}},getHashParam:function(b){b=b.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
var a="[#&]"+b+"=([^&]*)";
var d=new RegExp(a);
var c=d.exec(window.location.hash);
if(c==null){return null
}else{try{return decodeURIComponent(c[1])
}catch(f){return unescape(c[1])
}}},pushItem:function(a,b){if((a.length>0)&&(a[a.length-1].id==b.id)){return false
}a.push(b);
return true
},createChannels:function(){var a={find_all:new Array(),searchResults:new Array(),list_bookmarks:new Array()};
a.find_all.channelId="find_all";
a.find_all.channelName=labels.channels_find_all;
a.searchResults.channelId="searchResults";
a.searchResults.channelName=labels.channels_searchResults;
a.list_bookmarks.channelId="list_bookmarks";
a.list_bookmarks.channelName=labels.channels_list_bookmarks;
return a
},parseChannels:function(c,a){for(var b=0;
b<c.channels.length;
b++){c.channels[b].icon=(c.channels[b].icon?baseUrl+c.channels[b].icon:c.channels[b].icon);
window.channels[c.channels[b].id]=new Array();
window.channels[c.channels[b].id].channelId=c.channels[b].id;
window.channels[c.channels[b].id].channelName=c.channels[b].name;
if(c.channels[b].i18n&&c.channels[b].i18n[djConfig.locale]){window.channels[c.channels[b].id].channelName=c.channels[b].i18n[djConfig.locale].name
}window.channels[c.channels[b].id].channelLength=0;
window.channels[c.channels[b].id].channelColor=c.channels[b].color;
window.channels[c.channels[b].id].channelIcon=c.channels[b].icon;
a(c.channels[b].id.substring(0,c.channels[b].id.indexOf("_")),c.channels[b].id,window.channels[c.channels[b].id].channelName,c.channels[b].icon,c.channels[b].color)
}},clearChannelsBase:function(){var a;
for(a in channels){channels[a].isLoaded=false
}},clearArrays:function(){var a;
for(a in channels){while(channels[a].pop()){}}},cleanArray:function(a){var c=new Array();
var d;
for(var b=0;
b<a.length;
b++){d=a[b];
if(d!==undefined||d!==null){c.push(d)
}}return c
},isChildOf:function(a,b){if(a=="find_all"){return true
}else{return b.match("^"+a)==a
}},isSiblingOf:function(b,a){if(b.indexOf("_",b.indexOf("_")+1)==-1||a.indexOf("_",a.indexOf("_")+1)==-1){return false
}else{return b.substring(0,b.indexOf("_",b.indexOf("_")+1))==a.substring(0,a.indexOf("_",a.indexOf("_")+1))
}},getItem:function(d,a){var c=null;
if(!a){a=channels.find_all
}for(var b=0;
b<a.length;
b++){c=a[b];
if(c.id==d){return c
}}return null
},removePlaceholder:function(a){if(dojo.hasClass(a,"placeholder")){a.value="";
dojo.removeClass(a,"placeholder")
}},addPlaceholder:function(b,a){if(!dojo.hasClass(b,"placeholder")){b.value=a;
dojo.addClass(b,"placeholder")
}},isEnter:function(b){var a;
if(window.event){a=window.event.keyCode
}else{if(b){a=b.which
}else{return false
}}if(a==13){return true
}return false
},stopEvent:function(a){if(!a){a=window.event
}a.cancelBubble=true;
if(a.stopPropagation){a.stopPropagation()
}},getRouteServiceBySelection:function(){if(dojo.byId("route_option_HSL").selected){return HELSINKI
}else{if(dojo.byId("route_option_TKL").selected){return TAMPERE
}else{if(dojo.byId("route_option_OULU").selected){return OULU
}}}return false
},currentTime:function(){var b=new Date();
var a=b.getMinutes();
if(a<10){a="0"+a
}return b.getHours()+":"+a
},earlierRouteBase:function(b,c,a){if(b){Common.moreRoutes(c[c.length-1].start,c[c.length-1].end,true,a)
}else{Common.moreRoutes(c[0].start,c[0].end,true,a)
}},laterRouteBase:function(b,c,a){if(b){Common.moreRoutes(c[0].start,c[0].end,false,a)
}else{Common.moreRoutes(c[c.length-1].start,c[c.length-1].end,false,a)
}},moreRoutes:function(e,c,d,a){var f=d?c:e,b=new Date(parseFloat(f.arrivalts));
if(d){b.setTime(b.getTime()-1000*60);
a(e.location,c.location,b.getTime(),true)
}else{b.setTime(b.getTime()+1000*60);
a(e.location,c.location,b.getTime())
}},timediff:function(d,c){var h=d.indexOf(":");
var g=c.indexOf(":");
var f=new Date();
var e=new Date();
f.setTime(0);
e.setTime(0);
f.setHours(d.substring(0,h),d.substring(h+1),0,0);
e.setHours(c.substring(0,g),c.substring(g+1),0,0);
return(e.getTime()-f.getTime())/(1000*60)
},addRouteLocationToCookieBase:function(l,h,g,k){var a,c,b,e=null,d=false;
if(k){a="fromLocations"
}else{a="toLocations"
}if(!l[a]){l[a]=new Array()
}for(c=0;
c<5;
c++){if((l[a][c]&&l[a][c].address==h)||!l[a][c]){for(b=c-1;
b>=0;
b--){l[a][(b+1)]=l[a][b]
}l[a][0]=new Object();
l[a][0].address=h;
l[a][0].latitude=g.latitude;
l[a][0].longitude=g.longitude;
d=true;
break
}}if(!d){for(c=3;
c>=0;
c--){if(c==3){e=l[a][(c+1)]
}l[a][(c+1)]=l[a][c];
if(c==0){l[a][c]=new Object();
l[a][c].address=h;
l[a][c].latitude=g.latitude;
l[a][c].longitude=g.longitude
}}}return e
},parseRouteTime:function(b){var a=b;
if(isFinite(a)&&(a>-1)){if((a.length==1)||(a.length==3)){a="0"+a
}while(a.length<4){a=a+"0"
}}return a
},loadTargetPOI:function(a){var b=baseUrl+"/resources/pois/single";
if(targetPOIid){b+="/id?k="+targetPOIid
}else{b+="?k="+targetPOI;
if(targetPOIcity){b+="&c="+targetPOIcity
}}b+="&u="+window.adforeObj.uid+"&uit="+window.uit;
dojo.xhrGet({url:b,handleAs:"json",load:function(d,c){a(d);
return d
},failOk:true})
},parseCollections:function(c,a,e){if(c.channels){var d,b;
for(d in window.channels){if(d.indexOf("collections_")!=-1){if(selectedChannel.channelId=="find_all"||(!Common.isChildOf(selectedChannel.channelId,d)&&!Common.isChildOf(d,selectedChannel.channelId))){dojo.query(".channel_"+d).orphan();
window.channels[d].channelId=null
}}}for(b=0;
b<c.channels.length;
b++){if(c.channels[b].i18n&&c.channels[b].i18n[djConfig.locale]){c.channels[b].name=c.channels[b].i18n[djConfig.locale].name
}if(!window.channels[c.channels[b].id]||!window.channels[c.channels[b].id].channelId){a(c.channels[b].id.substring(0,c.channels[b].id.indexOf("_")),c.channels[b].id,c.channels[b].name);
if(window.channels[c.channels[b].id]){window.channels[c.channels[b].id].channelName=c.channels[b].name;
window.channels[c.channels[b].id].channelId=c.channels[b].id;
window.channels[c.channels[b].id].centre=c.channels[b].centre;
if(!mobile){e(c.channels[b].id,window.channels[c.channels[b].id].channelLength)
}}else{window.channels[c.channels[b].id]=new Array();
window.channels[c.channels[b].id].channelId=c.channels[b].id;
window.channels[c.channels[b].id].channelName=c.channels[b].name;
window.channels[c.channels[b].id].centre=c.channels[b].centre;
window.channels[c.channels[b].id].channelLength=0
}}}for(d in window.channels){if(!window.channels[d].channelId){delete window.channels[d]
}}}},distanceBetweenBase:function(d,a,c){var e=c/2/180*Math.PI;
var b=60*Math.sqrt(Math.pow(a,2)+Math.pow(d*Math.cos(e),2));
return b*1852
},distanceBetweenLatLon:function(g,a,e,f){var d=f-a;
var b=e-g;
var c=parseFloat(e)+parseFloat(g);
return Common.distanceBetweenBase(d,b,c)
},distanceBetween:function(d,e,f){var c=f.marker.longitude-e;
var a=f.marker.latitude-d;
var b=parseFloat(f.marker.latitude)+parseFloat(d);
return Common.distanceBetweenBase(c,a,b)
},sortByDistance:function(d,c){return d.distance-c.distance
},sortData:function(d,e,c){var b,a=d.items?d.items.length:0;
for(b=0;
b<a;
b++){d.items[b].distance=Common.distanceBetween(e,c,d.items[b])
}if(a>0){d.items.sort(Common.sortByDistance)
}},getDistanceLabel:function(b){var a=b;
if(a>9999){a=Math.round(b/1000);
a+=" km"
}else{if(a>994){a=Math.round(b/100)/10;
a+=" km"
}else{a=Math.round(b/10)*10;
a+=" m"
}}return a
},getRouteServiceByDatasource:function(a){if("HSL"==a){return HELSINKI
}if("OULA-palvelu"==a){return OULU
}if("Repa"==a){return TAMPERE
}return HELSINKI
},getSpecials:function(g,a,h,d,c,f,e,i){if(!window.adforeObj){window.adforeObj=new Object()
}if(!window.adforeObj.uid){window.adforeObj.uid=cookie.uid
}var b=baseUrl+"/resources/pois/special?lat="+g+"&lon="+a+"&l="+djConfig.locale;
if(mobile){b+="&f=nokia&m=true"
}b+="&u="+window.adforeObj.uid+"&uit="+window.uit;
dojo.xhrGet({url:b,latitude:g,longitude:a,targetDiv:c,includeFav:h,mapHighLight:d,cbParseAd:e,cbDisplayMessage:i,items:f,handleAs:"json",load:function(k,j){Common.parseSpecials(k,j.args)
}})
},isBookmarked:function(b){var a;
if(b.indexOf("e")){if(!window.adforeObj.bookmarkIds){return false
}for(a=0;
a<window.adforeObj.bookmarkIds.length;
a++){if(window.adforeObj.bookmarkIds[a]==b){return true
}}}else{if(!window.adforeObj.bookmarkEids){return false
}for(a=0;
a<window.adforeObj.bookmarkEids.length;
a++){if(window.adforeObj.bookmarkEids[a]==b){return true
}}}return false
},parseSpecials:function(e,g){if(e.channels){var f="",k,a,j=new Array(),b=new Array();
for(var h=0;
h<e.channels.length;
h++){Common.sortData(e.channels[h],g.latitude,g.longitude);
if(mobile){f+='<div class="frontpageContainer">';
f+='<button class="hidden" onclick="window.adforeObj.lastSelectedIndex = 1;setChannel(\''+e.channels[h].channelId+'\');placesPage();updateData();" id="frontpage_'+e.channels[h].channelId+'_hidden_button"></button>'
}f+='<div class="bold frontPageResultTitle ';
if(mobile){f+='frontpageButton singleBottomMargin singleLeftMargin" onclick="dojo.byId(\'frontpage_'+e.channels[h].channelId+'_hidden_button\').onclick();" id="frontpage_'+e.channels[h].channelId+"_button"
}f+='" ><p ';
if(mobile){f+="style=\"background-image: url('"+baseUrl+"/logos/"+e.channels[h].channelId+'.png\');" class="bookmarksButton frontpageChannelSelector clickable bold"'
}f+=">"+e.channels[h].title;
f+="</p></div>";
for(var d=0;
d<e.channels[h].items.length;
d++){k=e.channels[h].items[d];
if(k.i18n&&k.i18n[djConfig.locale]){var c;
for(c in k.i18n[djConfig.locale]){k[c]=k.i18n[djConfig.locale][c]
}}k.bookmarked=Common.isBookmarked(k.id);
if(g.items){g.items[k.id]=k
}f+=Common.displayResultItem(k,g.includeFav,true,false,g.mapHighLight,g.targetDiv);
if(k.hasIm){j.push(k.id)
}if(k.hasAd){if(xhrsWaiting.length<5){a=baseUrl+"/resources/shop/"+k.id+"/ad/"+globalDate.getTime()+"?l="+djConfig.locale;
a+="&u="+window.adforeObj.uid+"&uit="+window.uit;
xhrsWaiting.push({url:a,itemId:k.id,handleAs:"json",container:g.targetDiv,load:function(l,i){g.cbParseAd(l,i.args.itemId,i.args.container);
return l
},failOk:true})
}else{b.push(k.id)
}}}if(mobile){f+="</div>"
}if(b.length>0){a=baseUrl+"/resources/shop/ads/"+globalDate.getTime()+"?ids="+b+"&l="+djConfig.locale;
a+="&u="+window.adforeObj.uid+"&uit="+window.uit;
xhrsWaiting.push({url:a,handleAs:"json",container:g.targetDiv,load:function(l,i){Common.parseAds(l,i.args.container,g.cbParseAd);
return l
},failOk:true})
}if(j.length>0){a=baseUrl+"/resources/im/"+globalDate.getTime()+"?ids="+j;
a+="&u="+window.adforeObj.uid+"&uit="+window.uit;
xhrsWaiting.push({url:a,handleAs:"json",container:g.targetDiv,load:function(l,i){Common.parseIms(l,i.args.container,g.cbDisplayMessage);
return l
},failOk:true})
}}dojo.byId(g.targetDiv).innerHTML=f;
Common.checkXhrs()
}},displayResultItem:function(h,f,d,i,c,b){var e="",a="";
e='<div class="resultItem id'+h.id+' clickable" ';
if(c){e+="onmouseover=\"bringToFront('"+h.id+"');dojo.addClass(this, 'resultItemHover');\" onmouseout=\"removeHilight();dojo.removeClass(this, 'resultItemHover');\""
}e+=">";
if(mobile){a="<div onclick=\"this.parentNode.className += ' pressed';InfoscreenPage.showTimedInfoscreen('"+h.id+"');\" >"
}else{a="<div onclick=\"showInfoscreen('"+h.id+"');\" >"
}a+='<img class="inlineFloatLeft resultLogo clickable" src="'+(h.icon&&h.icon.indexOf("http")?baseUrl:"")+h.icon+'" />';
a+='<img class="inlineFloatLeft actionMenuIcon my_fav '+(h.bookmarked?"":"hidden")+'" src="my_fav.png" title="'+labels.your_favorite+'" />';
if(mobile){a+='<div class="resultArrow">&nbsp;</div>'
}if(f){a+='<img id="fav'+h.id+'" class="fav inlineFloatRight clickable" onclick="displayActionCommand(\''+h.id+"', event"+(b?", '"+b+"'":"")+');Common.stopEvent(event);" src="images/arrow_down.png" />'
}if(d){a+='<span class="inlineFloatRight bold resultDistance">'+Common.getDistanceLabel(h.distance)+"</span>"
}a+=h.name;
a+="<br />";
if(h.id.indexOf("e")!=-1){var g=Common.isEventOpen(h.openingHours);
if(g!=null){a+='<span class="bold">'+Common.getEventOpeningHours(g)+"</span>"
}else{a+='<span class="bold">&nbsp;</span>'
}}else{if(h.hoursNoShow){a+='<span class="bold underline">'+labels.opening_hours_info+"</span>"
}else{a+='<span class="bold">'+Common.isOpen(h.openingHours)+"</span>"
}}e+=a+"</div>";
if(mobile){e+='<div class="resultMessage resultPadding hidden">';
e+='<img class="inlineFloatLeft resultPadding" src="img/imquot.png" /><span class="messageHeader bold"></span><span class="messageBody hidden"></span></div>'
}else{if(h.hasIm){e+='<div class="resultMessageDetails resultPadding hidden" onmouseover="showMessageBody(true)" onmouseout="hideMessageBody(true)" >';
e+='<img class="inlineFloatLeft resultPadding resultRightPadding" src="img/imquot.png" />';
e+='<span class="messageHeader bold"></span>';
e+='<div class="messageBody messageBodyPadding"></div></div>';
e+='<div class="resultMessage resultPadding hidden"\n            onmouseover="dojo.addClass(this.previousSibling, \'moverMessage\');showMessageBody()"\n            onclick="dojo.addClass(this.previousSibling, \'moverMessage\');showMessageBody()">';
e+='<img class="inlineFloatLeft resultPadding resultRightPadding" src="img/imquot.png" />';
e+='<span class="messageHeader bold"></span></div>'
}else{e+='<div class="resultMessage resultPadding hidden" >';
e+='<img class="inlineFloatLeft resultPadding" src="img/imquot.png" />';
e+='<span class="messageHeader bold"></span>';
e+='<span class="messageBody hidden"></span></div>'
}}if(i&&h.stopCode){e+='<div id="'+h.stopCode+'_timeTable"></div>';
Common.loadTimetables(h.stopCode,h.datasource,h.stopCode+"_timeTable",i,3)
}if((h.hasAd)&&(c)){e+='<div class="resultAdContainer hidden" ';
e+=">"
}if(window.widget){e+='<div class="resultAdLink hidden"></div>'
}else{e+='<a class="resultAdLink hidden" href="" target="_blank">';
e+='<span class="bold aHeader hidden"></span>';
e+='<img class="aImage hidden" src="" />';
e+='<span class="aBody hidden"></span></a>'
}e+='<span class="resultAdId hidden"></span><div class="resultNoAdLink hidden"></div><div class="aStrether"></div>';
if((h.hasAd)&&(c)){e+="</div>"
}e+='<span class="hidden iidee">'+h.id+"</span>";
e+='<span class="hidden lat">'+h.marker.latitude+"</span>";
e+='<span class="hidden lon">'+h.marker.longitude+"</span>";
e+="</div>";
return e
},parseAds:function(c,b,a,e){for(var d=0;
d<c.ads.length;
d++){a(c.ads[d],c.ads[d].id,b,e)
}},parseIms:function(c,b,a){for(var d=0;
d<c.ims.length;
d++){a(c.ims[d],c.ims[d].id,b)
}},loadTimetables:function(f,b,g,a,d,e){var c=baseUrl+"/resources/route/ytv/stop/"+f+"?c="+Common.getRouteServiceByDatasource(b)+"&l="+djConfig.locale;
c+="&u="+window.adforeObj.uid+"&uit="+window.uit;
return dojo.xhrGet({url:c,target:g,num:d,nh:e,handleAs:"json",load:function(i,h){a(i,h.args.target,h.args.num,h.args.nh);
return i
},failOk:true})
},registrate:function(){window.open("https://"+server+"/registration.html","registration","height=550, width=550, toolbar=no, location=no, menubar=no, resizable=yes")
},getWeather:function(c,b){if(c!=defaultCity){if(!window.adforeObj.uid){window.adforeObj.uid=cookie.uid
}var a;
if(!c){a=baseUrl+"/resources/weather/now2z/"+b
}else{a=baseUrl+"/resources/weather/now2/"+encodeURIComponent(c)
}if(weatherXhr){weatherXhr.cancel();
weatherXhr=null
}a+="?u="+window.adforeObj.uid+"&uit="+window.uit;
weatherXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(e,d){weatherXhr=null;
Common.parseWeather(e);
return e
},error:function(){Common.resetWeather()
},failOk:true})
}else{Common.resetWeather()
}},getWeekdayLabel:function(c,e,b){var d=c.getDay();
var a=new Date();
if(d==a.getDay()&&!e){return""
}return labels["weekday"+(b?"Long":"")+d]+" "
},parseWeather:function(y){var r=new Date(),v=new Date(),p=0,k,o;
if(y.forecast){currentWeather=y;
o=y.forecast.city;
var m=dojo.byId("weatherimg"),n,f,h,d,w,c,a;
if(parseInt(y.forecast.atoms[0].time)<r.getTime()){p=1
}if(globalDate.getDate()!=r.getDate()){for(n=1;
n<y.forecast.atoms.length;
n++){v.setTime(parseInt(y.forecast.atoms[n].time));
if(globalDate.getDate()==v.getDate()&&v.getHours()==15){p=n;
break
}}}if(m){m.src=y.forecast.atoms[p].imgurl;
v.setTime(parseInt(y.forecast.atoms[p].time));
k=labels.weather+" "+v.getDate()+"."+(v.getMonth()+1)+". "+labels.weather_time+" "+v.getHours();
m.alt=k;
m.title=k
}if(parseInt(y.forecast.atoms[0].time)<r.getTime()){p=1
}todayStart=p;
todayEnd=p+7;
if(o){f="";
c="";
h="";
a="";
n=0;
for(p=todayStart;
p<y.forecast.atoms.length;
p++){v.setTime(parseInt(y.forecast.atoms[p].time));
d=v.getHours();
if(p<todayEnd){d=(d==0?24:d);
f+="<td>"+(d<10?"0"+d:d)+"</td>";
h+='<td><img class="bordered" src="'+y.forecast.atoms[p].imgurl+'" /></td>'
}if(r.getDate()!=v.getDate()&&(d==15||d==16||d==14)&&n<6){n++;
c+="<td>"+Common.getWeekdayLabel(v,true)+"</td>";
a+='<td><img class="bordered" src="'+y.forecast.atoms[p].imgurl+'" /></td>'
}}dojo.byId("weatherimagestable").innerHTML='<table><tr id="weatherToday" class="weatherdetailsHeader">'+f+"</tr><tr>"+h+'<tr class="hidden weatherdetailsHeader">'+c+'</tr><tr class="hidden">'+a+"</tr></table>";
dojo.byId("weatherdetailscity").innerHTML=o;
if(y.warnings&&parseInt(y.warnings.issued)>parseInt(y.forecast.issued)){w=new Date(parseInt(y.warnings.issued))
}else{w=new Date(parseInt(y.forecast.issued))
}dojo.byId("weatherissueddate").innerHTML=w.getDate()+"."+(w.getMonth()+1)+"."+w.getFullYear()+" ";
dojo.byId("weatherissuedtime").innerHTML=w.getHours()+":"+(w.getMinutes()<10?"0"+w.getMinutes():w.getMinutes());
dojo.removeClass("weatherdaily","wunselected");
dojo.addClass("weatherdaily","wselected");
dojo.removeClass("weatherweekly","wselected");
dojo.addClass("weatherweekly","wunselected")
}if(m){dojo.removeClass(m,"hidden")
}}m=dojo.byId("warnings");
if(y.warnings){currentWeather=y;
var t,s,b=new Array(),e=new Array(),x,g,q,l=180+25;
for(t in y.warnings){if(t=="issued"){continue
}if(y.warnings[t]&&parseInt(y.warnings[t].from)<r.getTime()&&parseInt(y.warnings[t].to)>r.getTime()){s=baseUrl+"/logos/warnings/"+t;
if(y.warnings[t].sev){s+=y.warnings[t].sev
}x=labels["alert_"+t];
g="";
if(t=="traffic"){x=labels["alert_"+t+y.warnings[t].sev];
if(y.warnings[t].reason){var u=y.warnings[t].reason.split(",");
for(p=u.length-1;
p>=0;
p--){g+=labels["alert_trafficreason"+u[p]];
if(p!=0){g+=", "
}}}}else{if(t=="rain"){if(y.warnings[t].amount){g=labels.rain_prediction+" "+parseInt(y.warnings[t].amount)+"mm";
if(y.warnings[t].period=="0"){g+=" "+labels.per_hour+"."
}if(y.warnings[t].period=="1"){g+=" "+labels.per_day+"."
}}}else{if(t=="uv"){if(y.warnings[t].index){g=labels.uv_index+" "+y.warnings[t].index+"."
}}else{if(t=="wind"){if(y.warnings[t].cond){g=labels.thunder_gusts+"."
}}else{if(t=="ped"){if(y.warnings[t].slip=="slippery"){g=labels.slippery+"."
}if(y.warnings[t].slip=="very slippery"){g=labels.very_slippery+"."
}}else{if(t=="heat"){if(y.warnings[t].temp){g=labels.temperature+" "+y.warnings[t].temp+"&deg;C."
}}else{if(t=="freeze"){if(y.warnings[t].temp){g=labels.temperature+" "+y.warnings[t].temp+"&deg;C."
}}}}}}}}if(!x){continue
}v.setTime(parseInt(y.warnings[t].from));
k=x+". "+labels.alert_issued+" "+v.getDate()+"."+(v.getMonth()+1)+". "+v.getHours()+":"+(v.getMinutes()<10?"0"+v.getMinutes():v.getMinutes());
b.push('<img class="warningImg" src="'+s+'.png" alt="'+k+'" title="'+k+'"/>');
e.push('<tr><td class="iconWidth" ><img class="warningImg" src="'+s+'.png" title="'+x+'" alt="'+x+'"/></td><td class="warningsText"><div class="warningsTitle">'+x+"</div>"+g+"</td></tr>");
if(g.length==0){l+=25
}else{if(g.length<30){l+=30
}else{l+=45
}}}}if(m){m.innerHTML="";
if(b.length<5){dojo.removeClass(m,"wideWarnings");
for(p=0;
p<b.length;
p++){dojo.place(b[p],m,"last")
}}else{dojo.addClass(m,"wideWarnings");
for(p=0;
p<b.length;
p++){dojo.place(b[p],m,"last")
}}if(dojo.hasClass(m,"wideWarnings")){dojo.removeClass("weather","weatherWide");
dojo.removeClass("weatherBg","weatherBgWide");
dojo.query(".selectors").removeClass("selectorsNarrow");
dojo.addClass("weather","weatherXWide");
dojo.addClass("weatherBg","weatherBgXWide");
dojo.query(".selectors").addClass("selectorsXNarrow")
}else{dojo.removeClass("weather","weatherXWide");
dojo.removeClass("weatherBg","weatherBgXWide");
dojo.query(".selectors").removeClass("selectorsXNarrow");
dojo.addClass("weather","weatherWide");
dojo.addClass("weatherBg","weatherBgWide");
dojo.query(".selectors").addClass("selectorsNarrow")
}dojo.removeClass(m,"hidden")
}dojo.removeClass("warningsheader","hidden");
m=dojo.byId("warningstable");
q='<table style="background-color: #E6E6E6; width: 100%">';
for(p=0;
p<e.length;
p++){q+=e[p]
}q+="</table>";
m.innerHTML=q;
dojo.removeClass(m,"hidden")
}else{dojo.addClass("warningsheader","hidden");
dojo.addClass("warningstable","hidden");
dojo.byId("warningstable").innerHTML="";
if(m){dojo.addClass(m,"hidden");
if(dojo.hasClass(m,"wideWarnings")){dojo.removeClass("weather","weatherXWide");
dojo.removeClass("weatherBg","weatherBgXWide");
dojo.query(".selectors").removeClass("selectorsXNarrow")
}else{dojo.removeClass("weather","weatherWide");
dojo.removeClass("weatherBg","weatherBgWide");
dojo.query(".selectors").removeClass("selectorsNarrow")
}}}},resetWeather:function(){dojo.addClass("warnings","hidden");
dojo.removeClass("weather","weatherWide");
dojo.query(".selectors").removeClass("selectorsNarrow");
dojo.addClass("weatherimg","hidden")
},switchWeatherToday:function(){var a=dojo.byId("weatherToday");
if(a&&dojo.hasClass(a,"hidden")){Common.switchWeatherView()
}},switchWeatherView:function(){dojo.query("#weatherimagestable tr").toggleClass("hidden");
dojo.query("#weatherselection td").toggleClass("wselected").toggleClass("wunselected");
if(!window.adforeObj.uid){window.adforeObj.uid=cookie.uid
}if(!mobile){Common.addTrackedEvent("WeatherSwitch;"+new Date().getTime()+";"+window.adforeObj.uid+(mobile?";mobi":""))
}},addTrackedEvent:function(a){trackedEvents.push(a);
if(trackedEvents.length>20){Common.flushTrackedEvents()
}},flushTrackedEvents:function(c){if(trackedEvents.length==0){return
}var d;
var a="";
while((d=trackedEvents.pop())!=null){a+=d+"\n"
}var b=baseUrl+"/usage/data";
dojo.xhrPost({url:b,sync:(c?true:false),postData:a,failOk:true})
},checkXhrs:function(){var a;
while(true){a=xhrsWaiting.shift();
if(!a){return
}else{xhrs.push(dojo.xhrGet(a))
}}},getEventLoadingMode:function(){return channels.srch_events?channels.srch_events.mode:1
},isOpen:function(b){if(b.length==0){return"&nbsp;"
}var d=null,t=Number.MAX_VALUE,e=null,w=globalDate,x=new Date();
if(b.length==1){d=b[0]
}else{for(var q=0;
q<b.length;
q++){if(b[q].periodStart==null&&b[q].periodEnd==null){e=b[q];
continue
}var a=new Date(),l;
if(b[q].periodStart==null){a.setFullYear(1971)
}else{l=b[q].periodStart;
a.setMonth(l.substring(l.indexOf(".")+1,l.length-1)-1,l.substring(0,l.indexOf(".")));
a.setHours(0,0,0,0)
}var h=new Date(),z;
if(b[q].periodEnd==null){h.setFullYear(2037)
}else{z=b[q].periodEnd;
h.setMonth(z.substring(z.indexOf(".")+1,z.length-1)-1,z.substring(0,z.indexOf(".")));
h.setHours(23,59,59,99)
}if(w.getTime()>=a.getTime()&&w.getTime()<=h.getTime()&&t>(h.getTime()-a.getTime())){d=b[q];
t=h.getTime()-a.getTime()
}}}if(d==null){if(e==null){return"&nbsp;"
}d=e
}var f,v;
switch(w.getDay()){case 1:f=d.mon;
v=d.sun;
break;
case 2:f=d.tue;
v=d.mon;
break;
case 3:f=d.wed;
v=d.tue;
break;
case 4:f=d.thu;
v=d.wed;
break;
case 5:f=d.fri;
v=d.thu;
break;
case 6:f=d.sat;
v=d.fri;
break;
case 0:f=d.sun;
v=d.sat;
break
}var p="";
for(var n=0;
n<f.length;
n++){var k=f[n];
var g=new Date(w.getTime());
if(k.open!=null){g.setHours(k.open.substring(0,k.open.indexOf(".")),k.open.substring(k.open.indexOf(".")+1),0,0)
}else{g=null
}var y=new Date(w.getTime());
if(k.close!=null){y.setHours(k.close.substring(0,k.close.indexOf(".")),k.close.substring(k.close.indexOf(".")+1),0,0);
if(g!=null&&y.getTime()<=g.getTime()){y.setTime(y.getTime()+24*60*60*1000)
}}else{y=null
}var s;
if(g!=null&&y!=null&&g.getHours()==0&&g.getMinutes()==0&&y.getHours()==0&&y.getMinutes()==0){s="24h"
}else{s=(k.open!=null?k.open:"")+"-"+(k.close!=null?k.close:"")
}p+=s+",";
if(x.getDay()!=w.getDay()){continue
}if((g!=null||y!=null)&&(g==null||g.getTime()<=w.getTime())&&(y==null||y.getTime()>=w.getTime())){var m="<img src='img/hour_green.png' alt='"+labels.open_now+"' title='"+labels.open_now+"'>";
if(y!=null&&((y.getTime()-3600000)<w.getTime())){m="<img src='img/hour_yellow.png' alt='"+labels.closed_soon+"' title='"+labels.closed_soon+"'>"
}return m+" "+labels.open+": "+s
}if(v.length>0){k=v[v.length-1];
g=new Date(w.getTime());
if(k.open!=null){g.setHours(k.open.substring(0,k.open.indexOf(".")),k.open.substring(k.open.indexOf(".")+1),0,0)
}else{g=null
}y=new Date(w.getTime());
if(k.close!=null){y.setHours(k.close.substring(0,k.close.indexOf(".")),k.close.substring(k.close.indexOf(".")+1),0,0);
if(g!=null&&y.getTime()<=g.getTime()){if(y.getTime()>w.getTime()){var r="<img src='img/hour_green.png' alt='"+labels.open_now+"' title='"+labels.open_now+"'>";
if((y.getTime()-3600000)<w.getTime()){r="<img src='img/hour_yellow.png' alt='"+labels.closed_soon+"' title='"+labels.closed_soon+"'>"
}return r+" "+labels.open+": -"+k.close
}}}}}if(p.length>0){p=p.substring(0,p.length-1)
}else{var u=Common.getWeekdayLabel(w);
if(u){return u+labels.closed
}return"<img src='img/hour_red.png' alt='"+labels.closed+"' title='"+labels.closed+"'>"+labels.closed+""
}if(x.getDay()==w.getDay()){return"<img src='img/hour_red.png' alt='"+labels.closed_now+"' title='"+labels.closed_now+"'> "+labels.closed_now+". "+labels.open+": "+Common.getWeekdayLabel(w)+p
}return labels.open+": "+Common.getWeekdayLabel(w)+p
},isEventOpen:function(c){if(c.length==0){return null
}var b=c[0],g=globalDate,d=new Date(),a=new Date(),f=new Date(),e;
d.setHours(0,0,0,0);
for(e=0;
e<c.length;
e++){a=Common.parseDate(c[e].startDate);
f=Common.parseDate(c[e].endDate);
if(a.getDate()==f.getDate()&&a.getMonth()==f.getMonth()&&a.getFullYear()==f.getFullYear()){if(a.getDate()==g.getDate()&&a.getMonth()==g.getMonth()&&a.getFullYear()==g.getFullYear()&&Common.getEventLoadingMode()==1){b=c[e];
break
}else{if(Common.getEventLoadingMode()==2&&a.getTime()>=d.getTime()&&a.getTime()<=d.getTime()+1000*60*60*24*6){b=c[e];
break
}else{if(Common.getEventLoadingMode()==3&&a.getTime()>=getEventFrom()&&a.getTime()<=getEventTo()){b=c[e];
break
}}}}}return b
},parseDate:function(c){var b=c.indexOf(".",c.indexOf(".")+1),a=new Date();
a.setFullYear(c.substring(b+1,c.length),c.substring(c.indexOf(".")+1,b)-1,c.substring(0,c.indexOf(".")));
a.setHours(0,0,0,0);
return a
},parseTime:function(a){var b=new Date();
b.setHours(a.substring(0,a.indexOf(".")),a.substring(a.indexOf(".")+1),0,0);
return b
},getEventOpeningHours:function(b){var d=null,c=null,g=globalDate,e=new Date(),a=Common.parseDate(b.startDate),f=Common.parseDate(b.endDate),h;
if(b.startTime!=null){d=Common.parseTime(b.startTime)
}else{d=a
}if(b.endTime!=null){c=Common.parseTime(b.endTime)
}else{c=f
}e.setHours(0,0,0,0);
if(a.getDate()==f.getDate()&&a.getMonth()==f.getMonth()&&a.getFullYear()==f.getFullYear()){if(e.getTime()==a.getTime()){h=labels.today+" "
}else{h=Common.getWeekdayLabel(a,true)
}if((d.getTime()==e.getTime()&&c.getTime()==e.getTime())||d.getTime()==a.getTime()){return h+b.startDate.substring(0,b.startDate.lastIndexOf(".")+1)
}else{if(d.getTime()!=c.getTime()&&c.getTime()!=e.getTime()){return h+b.startDate.substring(0,b.startDate.lastIndexOf(".")+1)+" "+b.startTime+"-"+b.endTime
}else{return h+b.startDate.substring(0,b.startDate.lastIndexOf(".")+1)+" "+b.startTime
}}}else{if(f.getFullYear()==g.getFullYear()){return labels.until_before+" "+b.endDate.substring(0,b.endDate.lastIndexOf(".")+1)+" "+labels.until_after
}else{return labels.until_before+" "+b.endDate+" "+labels.until_after
}}},getRoutingActionText:function(b,a){if(b==2){return labels.routing_arrived
}switch(a){case 0:return"";
case 1:return labels.routing_no_turn;
case 2:return labels.routing_keep_middle;
case 3:return labels.routing_keep_right;
case 4:case 5:case 6:return labels.routing_turn_right;
case 7:return labels.routing_keep_left;
case 8:case 9:case 10:return labels.routing_turn_left;
case 11:return labels.routing_uturn;
default:a=parseInt(a)-11;
return labels.routing_roundaboutstart+" "+Common.toOrdinal(a)+" "+labels.routing_roundaboutend
}},getNokiaRoute:function(e,h,i,d,g){var j=new ovi.mapsapi.routing.Manager();
j.addObserver("state",e);
var f=new ovi.mapsapi.routing.WaypointParameterList();
if(h.latitude&&h.longitude){f.addCoordinate(new ovi.mapsapi.geo.Coordinate(parseFloat(h.latitude),parseFloat(h.longitude)))
}else{if(h.lat&&h.lon){f.addCoordinate(new ovi.mapsapi.geo.Coordinate(parseFloat(h.lat),parseFloat(h.lon)))
}}if(i.latitude&&i.longitude){f.addCoordinate(new ovi.mapsapi.geo.Coordinate(parseFloat(i.latitude),parseFloat(i.longitude)))
}else{if(i.lat&&i.lon){f.addCoordinate(new ovi.mapsapi.geo.Coordinate(parseFloat(i.lat),parseFloat(i.lon)))
}}if(!g){g="fastest"
}var a;
if(d){a="pedestrian"
}else{a="car"
}var b=[{type:g,transportModes:a,trafficMode:"default",options:""}];
try{j.calculateRoute(f,b)
}catch(c){console.log("error",c)
}},parseWeekDayHours:function(b){var a=b.length?"":labels.closed;
for(var c=0;
c<b.length;
c++){if(c>0){a+="<br />"
}a+=(b[c].open!=null?b[c].open:"")+"-"+(b[c].close!=null?b[c].close:"")
}return a
},reverseGeocodeCall:function(c,d,a){dojo.destroy("reverseGeocodeScript");
var b="http://loc.desktop.maps.svc.ovi.com/geocoder/rgc/2.0?lat="+c+"&long="+d+"&output=json&to=50&callback_func="+a;
dojo.create("script",{id:"reverseGeocodeScript",type:"text/javascript",src:b},dojo.body(),"last")
},geocodeCall:function(c,a){dojo.destroy("geocodeScript");
var b="http://prod.s2g.gate5.de/NOSe/json?q="+encodeURIComponent(c)+"&la=fi&to=50&vi=address&dv=oviMaps&callback_func="+a;
dojo.create("script",{id:"geocodeScript",type:"text/javascript",src:b},dojo.body(),"last")
},isInPubTransArea:function(a){var c=parseFloat(a.latitude.toString().replace(",",".")),b=parseFloat(a.longitude.toString().replace(",","."));
return(Common.isHSL(c,b)||Common.isTKL(c,b))
},isTKL:function(b,a){if(((b<parseFloat("61.57"))&&(b>parseFloat("61.418")))&&((a>parseFloat("23.554"))&&(a<parseFloat("23.969")))){return true
}return false
},isHSL:function(b,a){if(((b<parseFloat("60.453"))&&(b>parseFloat("59.965")))&&((a>parseFloat("24.2880"))&&(a<parseFloat("25.2685")))){return true
}return false
},getOpeningHours:function(b,a){var c;
switch(a.getDay()){case 0:c="sun";
break;
case 1:c="mon";
break;
case 2:c="tue";
break;
case 3:c="wed";
break;
case 4:c="thu";
break;
case 5:c="fri";
break;
case 6:c="sat";
break
}return'<td class="singleLeftPadding singleRightPadding '+(globalDate.getDate()==a.getDate()?"bold":"")+'">'+Common.getWeekdayLabel(a,true)+(a.getDate())+"."+(a.getMonth()+1)+'.</td><td class="'+(globalDate.getDate()==a.getDate()?"bold":"")+'">'+Common.parseWeekDayHours(b[c])+"</td>"
},toOrdinal:function(a){if("en"==djConfig.locale){if(1==a){return a+"st"
}if(2==a){return a+"nd"
}if(3==a){return a+"rd"
}return a+"th"
}else{return a+"."
}},setStaticFields:function(){var d=dojo.i18n.getLocalization("adfore","staticlabels"),c,b=false,a=new Date();
for(c in d){b=true;
break
}if(!b){return
}dojo.query(".i18n").forEach(function(e){if(d[e.id]){e.innerHTML=d[e.id]
}if(dojo.hasClass(e,"i18nTitle")){if(d[e.id+"_title"]){e.title=d[e.id+"_title"]
}}if(dojo.hasClass(e,"i18nAlt")){if(d[e.id+"_alt"]){e.alt=d[e.id+"_alt"]
}}if(dojo.hasClass(e,"i18nValue")){if(d[e.id+"_value"]){e.value=d[e.id+"_value"]
}}if(dojo.hasClass(e,"i18nImg")){if(d[e.id+"_img"]){e.title=d[e.id+"_img"];
e.alt=d[e.id+"_img"]
}}if(dojo.hasClass(e,"i18nSrc")){if(d[e.id+"_src"]){e.src=d[e.id+"_src"]
}}});
if(d.defaultCity){cityJson.items[0].name=d.defaultCity;
defaultCity=d.defaultCity
}},addZero:function(a){if(a<10){return"0"+a
}return a
},getBearing:function(c,e,f,g){c=parseFloat(c)*Math.PI/180;
e=parseFloat(e)*Math.PI/180;
f=parseFloat(f)*Math.PI/180;
g=parseFloat(g)*Math.PI/180;
var b=(g-e),h=Math.sin(b)*Math.cos(f),a=Math.cos(c)*Math.sin(f)-Math.sin(c)*Math.cos(f)*Math.cos(b),d=Math.atan2(h,a)*180/Math.PI;
return(d+360)%360
},getCompassBearing:function(a,c,d,e){var b=Common.getBearing(a,c,d,e);
if(b<22.5){return"N"
}else{if(b<67.5){return"NE"
}else{if(b<112.5){return"E"
}else{if(b<157.5){return"SE"
}else{if(b<202.5){return"S"
}else{if(b<247.5){return"SW"
}else{if(b<292.5){return"W"
}else{if(b<337.5){return"NW"
}else{return"N"
}}}}}}}}},getCompassLabel:function(a){return labels["dir_"+Common.getCompassBearing(0,0,0,0,a)]
},nokiaPlaceSearch:function(g,e,b,d,a,f,c){if(!b){d=d?d:"*";
nokia.places.searchManager.findPlaces({searchTerm:d,boundingBox:e,searchCenter:g,start:f,limit:c,onComplete:a})
}else{nokia.places.searchManager.findPlacesByCategory({category:b,boundingBox:e,searchCenter:g,start:f,limit:c,onComplete:a})
}},loadOviPlace:function(b,a){Common.nokiaPlaceDetailCallback.item=b;
Common.nokiaPlaceDetailCallback.cb=a;
nokia.places.placesManager.getPlaceData({placeId:b.placesId,onComplete:Common.nokiaPlaceDetailCallback})
},nokiaPlaceDetailCallback:function(a){console.log(a);
var d=Common.nokiaPlaceDetailCallback.item;
d.placesId=false;
if(a.location.address){d.address=a.location.address.street+(a.location.address.houseNumber?" "+a.location.address.houseNumber:"")+", "+a.location.address.city
}if(a.contacts){for(var b=0;
b<a.contacts.length;
b++){if(a.contacts[b].type=="phone"){d.tel=a.contacts[b].value
}else{if(a.contacts[b].type=="website"){d.www=a.contacts[b].value
}else{if(a.contacts[b].type=="email"){d.email=a.contacts[b].value
}else{if(a.contacts[b].type=="fax"){d.fax=a.contacts[b].value
}else{console.log("New type: "+a.contacts[b].type)
}}}}}}d.datasource="Nokia Places";
if(a.additionalData&&a.additionalData.summaryOpeningHours){d.desc="<b>"+labels.infoscreenopening+": </b>"+a.additionalData.summaryOpeningHours
}if(a.descriptions){var c=(a.descriptions[0]?a.descriptions[0]:a.descriptions);
if(c.content){if(!d.desc){d.desc=""
}d.desc=c.content+"<br>"+d.desc;
d.datasource=d.datasource+", "+c.supplier.displayName
}}d.openingHours=new Array();
d.channels=new Array();
Common.nokiaPlaceDetailCallback.cb(d)
},parseNokiaResults:function(k,e,a,c){e.items=new Array();
var f,d,b,h,g;
for(f=0;
f<k.results.length;
f++){b=k.results[f].place;
if(!b.placeId||(b.suppliers&&b.suppliers[0]=="ovi")||(!a&&!onMap(b.location.displayPosition.latitude,b.location.displayPosition.longitude))){k.results.splice(f,1);
f--;
continue
}}for(f=0;
f<k.results.length;
f++){b=k.results[f].place;
for(d=f+1;
d<k.results.length;
d++){g=k.results[d].place;
if(b.name.toLowerCase()==g.name.toLowerCase()&&(b.location&&b.location.address&&b.location.address.street&&g.location&&g.location.address&&g.location.address.street&&b.location.address.street.toLowerCase()==g.location.address.street.toLowerCase())){k.results.splice(d,1);
d--
}}}if(k.results.length>0){k.results.sort(Common.sortByDistance)
}for(f=c?c:0;
f<k.results.length;
f++){h=new Object();
b=k.results[f].place;
h.distance=k.results[f].distance;
h.id="o"+b.placeId;
h.address=b.location.address.street+(b.location.address.houseNumber?" "+b.location.address.houseNumber:"")+", "+b.location.address.city;
h.icon=b.categories[0].iconURL;
h.marker=new Object();
h.marker.type="marker";
h.marker.latitude=b.location.displayPosition.latitude;
h.marker.longitude=b.location.displayPosition.longitude;
h.marker.icon=b.categories[0].iconURL;
h.name=b.name;
if(b.contacts){for(d=0;
d<b.contacts.length;
d++){if(b.contacts[d].type=="phone"){h.tel=b.contacts[d].value
}else{if(b.contacts[d].type=="website"){h.www=b.contacts[d].value
}else{console.log("New type: "+b.contacts[d].type)
}}}}h.datasource="Nokia Places";
h.openingHours=new Array();
h.channels=new Array();
h.placesId=b.placeId;
e.items.push(h);
if(!a&&e.items.length==100){break
}if(a&&e.items.length==10){break
}}e.count=e.items.length
},roundCoord:function(a){a=parseFloat(a);
return Math.round(a*1000000)/1000000
}};
var hilightMarker,baseUrl="",stackMarker="/logos/stack",busStack="/logos/busstops_",cityStore=new dojo.data.ItemFileReadStore({data:cityJson}),tiles=new Array(),player=false,ttXhr,stopMarkers=new Array(),cityXhr,collXhr,wt,mt,cookie=new Object(),bookmarks=new Array(),mapChangeTimeout;
function parseInfoscreen(j){if(j.placesId){Common.loadOviPlace(j,parseInfoscreen)
}dojo.byId("infoscreenlogo").src=j.icon;
if(j.bookmarked){dojo.removeClass("my_fav_infoscreen","hidden")
}else{dojo.addClass("my_fav_infoscreen","hidden")
}dojo.query("#infoscreenheader").removeClass("infoscreenheaderlimit")[0].innerHTML=j.name;
if(j.address){var b=dojo.byId("infoscreenaddress");
dojo.removeClass(b,"hidden");
b.innerHTML=j.address
}else{dojo.addClass("infoscreenaddress","hidden")
}if(j.tel){dojo.removeClass("infoscreentelContainer","hidden");
dojo.byId("infoscreentel").innerHTML=j.tel
}else{dojo.addClass("infoscreentelContainer","hidden")
}if(j.www){dojo.removeClass("infoscreenwwwContainer","hidden");
var d=dojo.byId("infoscreenwww");
d.href=j.www;
d.onclick=function(){Common.addTrackedEvent("POIUrlClick;"+new Date().getTime()+";"+cookie.uid+";"+j.id);
Common.flushTrackedEvents()
}
}else{dojo.addClass("infoscreenwwwContainer","hidden")
}var a,c=new Date(),e;
if(j.openingHours&&j.openingHours.length>0&&j.id.indexOf("e")==-1){a="<table><tr><td>"+labels.infoscreenopening+"</td>";
for(e=0;
e<7;
e++){a+=Common.getOpeningHours(j.openingHours[0],c);
if(e<6){a+="</tr><tr><td>&nbsp;</td>"
}else{a+="</tr></table>"
}c.setMilliseconds(c.getMilliseconds()+1000*60*60*24)
}dojo.query("#infoscreenopeningHoursContainer").removeClass("hidden")[0].innerHTML=a
}else{if(j.openingHours&&j.openingHours.length>0){a="<table>";
for(e=0;
e<j.openingHours.length;
e++){a+="<tr><td>"+Common.getEventOpeningHours(j.openingHours[e])+"</tr></td>"
}a+="</table>";
dojo.query("#infoscreenopeningHoursContainer").removeClass("hidden")[0].innerHTML=a
}else{if(j.stopCode){dojo.query("#infoscreenopeningHoursContainer").removeClass("hidden")[0].innerHTML="<img src='progress.gif' /><br />"+labels.loading_timetable+"...";
Common.loadTimetables(j.stopCode,j.datasource,"infoscreenopeningHoursContainer",parseTimetable)
}else{dojo.query("#infoscreenopeningHoursContainer").addClass("hidden")[0].innerHTML="&nbsp;"
}}}if(j.desc){if(j.id.indexOf("e")==-1){dojo.query("#infoscreendesc").removeClass("hidden")[0].innerHTML=j.desc;
dojo.addClass("infoscreendescevt","hidden")
}else{dojo.query("#infoscreendescevt").removeClass("hidden")[0].innerHTML=j.desc;
dojo.addClass("infoscreendesc","hidden")
}}else{dojo.addClass("infoscreendesc","hidden");
dojo.addClass("infoscreendescevt","hidden")
}dojo.byId("infoscreenitemid").innerHTML=j.id;
if(j.services){dojo.query("#infoscreenservices").removeClass("hidden")[0].innerHTML=labels.services+": "+j.services
}else{dojo.addClass("infoscreenservices","hidden")
}if(j.datasource){dojo.query("#infoscreendatasource").removeClass("hidden")[0].innerHTML="["+labels.datasource+": "+j.datasource+"]"
}else{dojo.addClass("infoscreendatasource","hidden")
}dojo.removeClass("infoscreendetails","infoscreendetailslimit");
dojo.removeClass("infoscreenheader","infoscreenheaderlimit");
var h,g=dojo.query("div.resultItem.id"+j.id+" div.resultMessage .messageHeader");
if(g.length>0){h=dojo.query("div.resultItem.id"+j.id+" div.resultMessage .messageHeader")[0].innerHTML;
dojo.query("#infoscreen .messageHeader")[0].innerHTML=h;
if(j.hasIm){var f=dojo.query("div.resultItem.id"+j.id+" div.resultMessageDetails .messageBody")[0].innerHTML;
dojo.query("#infoscreen .messageBody")[0].innerHTML=f
}}if(h){dojo.removeClass("infoscreenMessageBox","hidden");
dojo.addClass("infoscreenheader","infoscreenheaderlimit")
}else{dojo.addClass("infoscreenMessageBox","hidden")
}dojo.byId("infoscreeninnerwrapper").scrollTop=0
}function parseInfoscreenAds(b,e){if(b.ads){var a=b.ads.length;
var c="";
for(var d=0;
d<a;
d++){Common.addTrackedEvent("InfoAdShow;"+new Date().getTime()+";"+cookie.uid+";"+b.ads[d].ad.id+";"+(d+1)+";"+a+";"+e);
b.ads[d].ad.header=b.ads[d].ad.header?b.ads[d].ad.header:"";
if(b.ads[d].ad.wwwurl){c+='<div class="infoscreenads inlineClear"><a class="resultAdLink" href="'+b.ads[d].ad.wwwurl+'" target="_blank">'
}else{c+='<div class="infoscreenads inlineClear"><div class="resultAdLink" >'
}if(!(b.ads[d].ad.imgurl&&!b.ads[d].ad.body)){c+='<span class="inlineFloatLeft bold aHeader">';
c+=b.ads[d].ad.header;
c+="</span>"
}if(b.ads[d].ad.imgurl){c+='<img onload="resizeInfoscreenAds()" class="aImage inlineFloatLeft'+(b.ads[d].ad.body?" aImageLmt":"")+'" src="';
c+=b.ads[d].ad.imgurl;
c+='" alt="';
c+=b.ads[d].ad.header;
c+='"/>'
}if(b.ads[d].ad.body){c+='<div class="inlineFloatLeft ';
if(!b.ads[d].ad.imgurl){c+='inlineClear" style="width:100%'
}else{c+="aText"
}c+='"><span class="aBody">';
c+=b.ads[d].ad.body;
c+="</span></div>"
}c+='<div class="aStrether"></div>';
c+=(b.ads[d].ad.wwwurl?"</a>":"</div>");
c+="</div>"
}dijit.byId("infoscreenAdTab").domNode.innerHTML=c;
showAdsTab()
}}function showAdsTab(){dojo.addClass("infoscreenAdsLoading","hidden");
var b=dijit.byId("infoscreenTabContainer");
if(dojo.hasClass("infoscreenMessageBox","hidden")){dojo.removeClass(b.domNode,"infoscreenTabContainerPos")
}else{dojo.addClass(b.domNode,"infoscreenTabContainerPos")
}dojo.removeClass(b.domNode,"dijitHidden");
dojo.addClass("infoscreendetails","infoscreendetailslimit");
dojo.addClass("infoscreenheader","infoscreenheaderlimit");
var a=dojo.byId("infoscreenAdTab").scrollHeight;
b.resize({h:a+35})
}function resizeInfoscreenAds(){dijit.byId("infoscreenTabContainer").resize({h:35+dojo.byId("infoscreenAdTab").scrollHeight})
}function parseTimetable(e,g,a,c){var d='<table width="100%" border="0" style="border-spacing: 0px;">',b,f;
if(!c){d+='<tr><td style="border:none" class="timetabledata"><b><font size="2">'+labels.time;
d+='</font></b></td><td style="border:none" class="timetabledata"><b><font size="2">'+labels.line;
d+='</font></b></td><td style="border:none" class="timetabledata"><b><font size="2">'+labels.destination;
d+='</font></b></td><td style="border:none" class="timetabledata"></td></tr>'
}for(b=0;
b<e.departures.length;
b++){if(a&&a==b){break
}d+='<tr><td class="timetabledata">';
f=new Date(parseInt(e.departures[b].departure));
f=(f.getHours()<10?"0"+f.getHours():f.getHours())+":"+(f.getMinutes()<10?"0"+f.getMinutes():f.getMinutes());
d+='<font size="2">'+f+"</font></td>";
d+='<td class="timetabledata">';
d+='<b><font size="2">'+e.departures[b].line.line+"</font></b></td>";
d+='<td class="timetabledata">';
d+='<font size="2">'+e.departures[b].line.destination+"</font></td>";
if(e.departures[b].line.ex){d+='<td class="timetabledata"><img src="images/alert.gif" title="'+e.departures[b].line.ex+'"></td></tr>'
}else{d+='<td class="timetabledata"></td></tr>'
}}d+="</table>";
dojo.byId(g).innerHTML=d;
if(player&&player.components.get(0).openBubbleHandles.getLength()>0){player.components.get(0).updateBubble(0,player.components.get(0)._bubbleContentNode.innerHTML)
}}dojo.provide("adfore.ctrl");
function startup(){if(top.location!=self.location){top.location=self.location
}if(dojo.isIE==8){dojo.addClass("noscript","hidden")
}if(dojo.isOpera){dojo.create("link",{href:"fix-ie-styles.css",type:"text/css",rel:"stylesheet"},"styles","after")
}window.onbeforeunload=function(a){unload(true);
Common.flushTrackedEvents(true)
};
labels=dojo.i18n.getLocalization("adfore","labels");
dojo.addClass(djConfig.locale+"LangChange","hidden");
channels=Common.createChannels();
selectedChannel=channels.find_all;
Common.setStaticFields();
if(djConfig.locale!="fi"){dojo.create("link",{href:"styles_"+djConfig.locale+".css",type:"text/css",rel:"stylesheet"},"styles","after")
}loadCookie()
}dojo.addOnLoad(startup);
function loadCookie(){console.log("loadCookie");
cookie=dojo.fromJson(dojo.cookie("adforeZoomScalePosition"));
if(cookie){window.adforeObj.firstTime=false;
if(cookie.welcomeLangChange){IntroPage.showWelcome();
delete cookie.welcomeLangChange
}if(cookie.keepLogged){dojo.byId("loginFrame").iecrap=function(){console.log("onload");
cookie=dojo.fromJson(dojo.cookie("adforeZoomScalePosition"));
loadCookieCB()
};
console.log("setting check url");
dojo.byId("loginFrame").src="https://"+server+"/user/auth/check"
}else{if(cookie.adforeSession&&!cookie.langChange){delete cookie.adforeSession;
dojo.cookie("adforeZoomScalePosition",dojo.toJson(cookie),{expires:3650,path:"/"})
}loadCookieCB()
}}else{cookie=new Object();
window.adforeObj.firstTime=true;
if(!targetPOI&&!targetCollection){IntroPage.showWelcome()
}loadCookieCB()
}}function loadCookieCB(){if(cookie.langChange){delete cookie.langChange
}if(cookie.adforeSession){setLogoutTexts()
}initCookie();
if(window.adforeObj.firstTime){dojo.cookie("adforeZoomScalePosition",dojo.toJson(cookie),{expires:3650,path:"/"})
}loadChannels();
if(!targetPOI){loadBookmarks(cookie)
}}function initCookie(){if(!cookie.latitude){cookie.latitude=60.209
}if(!cookie.longitude){cookie.longitude=24.658
}if(!cookie.zoomScale){cookie.zoomScale=15
}if(!cookie.uid){cookie.uid=generateUid()
}if(!cookie.lang){cookie.lang=djConfig.locale
}}function changeLang(a){cookie.lang=a;
if(cookie.adforeSession){saveCookie(function(){window.location.reload()
});
cookie.langChange=true;
saveCookie();
return
}saveCookie();
window.location.reload()
}function loadChannels(){dojo.xhrGet({url:"/resources/channels",handleAs:"json",load:function(b,a){addChannel(channels.list_bookmarks.channelId.substring(0,channels.list_bookmarks.channelId.indexOf("_")),channels.list_bookmarks.channelId,channels.list_bookmarks.channelName);
addBookmarkInfo();
Common.parseChannels(b,addChannel);
setEventLoadingMode(1);
setup();
loadMap();
return b
},failOk:false})
}function setup(){resetWeekdaySelection(globalDate);
if(!targetPOI&&!targetCollection){if(cookie.channel){setCookieChannel(cookie.channel)
}else{setChannel("srch_shops")
}}setSelectedResultHeaderChannel();
if(targetCollection){Common.addTrackedEvent("CollectionLand;"+new Date().getTime()+";"+cookie.uid+";"+targetCollection);
var a={channels:[{id:targetCollection,name:decodeURIComponent(Common.getUrlParam("cname"))}]};
if(Common.getUrlParam("pid")&&Common.getUrlParam("pname")){a.channels.push({id:Common.getUrlParam("pid"),name:decodeURIComponent(Common.getUrlParam("pname"))});
a.channels.push(a.channels.shift())
}Common.parseCollections(a,addChannel,updateChannel);
setChannel(targetCollection);
if(Common.getUrlParam("lat")&&Common.getUrlParam("lon")){cookie.latitude=parseFloat(Common.getUrlParam("lat"));
cookie.longitude=parseFloat(Common.getUrlParam("lon"));
if(Common.getUrlParam("z")){cookie.zoomScale=Common.getUrlParam("z")
}else{cookie.zoomScale=15
}}}if(!targetPOI){setCity(true,cookie.zoomScale,cookie.latitude,cookie.longitude)
}RoutesPage.init();
IntroPage.init(targetPOI);
storeHome(getHome())
}function mapChange(){if(player.oldCenter.latitude!=player.center.latitude||player.oldCenter.longitude!=player.center.longitude||player.oldZoom!=player.zoomLevel){player.oldCenter=player.center;
player.oldZoom=player.zoomLevel;
Common.flushTrackedEvents();
Page.current.positionChange();
setCookie()
}}function setCookie(){if(player){var a=player.center;
cookie.latitude=a.latitude;
cookie.longitude=a.longitude;
cookie.zoomScale=player.zoomLevel
}if(selectedChannel.channelId!=channels.searchResults.channelId){cookie.channel=selectedChannel.channelId
}dojo.cookie("adforeZoomScalePosition",dojo.toJson(cookie),{expires:3650,path:"/"})
}function fetchLatestMessage(d,b,c){var a="/resources/im/latest?lat="+d+"&lon="+b+"&city="+c;
xhrs.push(dojo.xhrGet({url:a,handleAs:"json",load:function(f,e){displayLatest(f);
return f
},failOk:true}))
}function containsEvents(a){return Common.isChildOf("srch_events",a)||a=="find_all"||a=="find_traveling"
}function minmax(c,b,a){if(b!=null){c=Math.max(c,b)
}if(a!=null){c=Math.min(c,a)
}return c
}function parseChannelCounts(b){dojo.query("#channels p.channel span.count").forEach(function(c){c.innerHTML="(0)";
updateChannelTextLength(c)
});
for(var a=0;
a<b.counts.length;
a++){if(b.counts[a].count==-1){updateChannel(b.counts[a].channelId,">100")
}else{updateChannel(b.counts[a].channelId,b.counts[a].count)
}}updateBookmarkChannel()
}function addChannel(b,e,a){var c=e;
if(Common.isChildOf("collections",c)){c="collections"
}if(e.indexOf("_",e.indexOf("_")+1)==-1){dojo.query("#channel_"+b)[0].innerHTML+='<p class="channel channel_'+e+' parent" onclick="channelClick(channels.'+e+', true);" style="background-image: url(\'/logos/'+c+'.png\');"><span class="channelText">'+a+'&nbsp;<span class="count">(0)</span></span></p>'
}else{var d='<p class="channel channel_'+e.substring(0,e.indexOf("_",e.indexOf("_")+1))+" subchannel channel_"+e+(Common.isSiblingOf(selectedChannel.channelId,e)?"":" hidden")+'" onclick="channelClick(channels.'+e+', false);" style="background-image: url(\'/logos/'+c+'.png\');"><span class="channelText">'+a+'&nbsp;<span class="count">(0)</span></span></p>',f=dojo.query("#channel_"+b+" .channel_"+e.substring(0,e.indexOf("_",e.indexOf("_")+1)));
dojo.place(d,f[f.length-1],"after")
}}function updateChannel(e,d){var c,a,b;
if(e.indexOf("_",e.indexOf("_")+1)==-1){c=dojo.query("p.channel_"+e+".parent span.count")
}else{c=dojo.query("p.channel_"+e+" span.count")
}b="("+d+")";
for(a=0;
a<c.length;
a++){c[a].innerHTML=b;
updateChannelTextLength(c[a])
}if(!channels[e]){channels[e]=new Array()
}channels[e].channelLength=d
}function updateChannelTextLength(a){if(a.parentNode.clientHeight>20||(a.parentNode.clientHeight==0&&a.parentNode.innerHTML.length>69)){dojo.addClass(a.parentNode,"longChannel")
}else{dojo.removeClass(a.parentNode,"longChannel")
}}function setSelectedResultHeaderChannel(){if(Common.isChildOf("collections",selectedChannel.channelId)){dojo.byId("resultHeaderChannelIcon").src="/logos/collections.png"
}else{dojo.byId("resultHeaderChannelIcon").src="/logos/"+selectedChannel.channelId+".png"
}dojo.byId("resultHeaderChannel").innerHTML=selectedChannel.channelName
}function selectChannel(a){dojo.query(".selectedchannel").removeClass("selectedchannel ");
dojo.query(a).addClass("selectedchannel ");
setSelectedResultHeaderChannel()
}function showSubchannels(a,b){if(dojo.hasClass(dojo.query(a)[0],"selectedchannel")){dojo.query(b).toggleClass("hidden")
}else{dojo.query(b).removeClass("hidden")
}}function displayChannel(c){var d=getPosition(),b,a=false;
if(Page.current.pageName=="tabPlaces"){b=player.zoomLevel
}else{b=-1
}Common.addTrackedEvent("ChannelClick;"+new Date().getTime()+";"+cookie.uid+";"+c.channelId+";"+d.latitude+","+d.longitude+","+b);
if(selectedChannel.channelId!=c.channelId){if(Common.isChildOf("srch_events",selectedChannel.channelId)&&!Common.isChildOf("srch_events",c.channelId)){hideEventDayBrowser()
}if(Common.isChildOf("srch_events",c.channelId)&&!Common.isChildOf("srch_events",selectedChannel.channelId)){a=true
}if(Common.isChildOf("srch_events",c.channelId)&&Common.isChildOf("srch_events",selectedChannel.channelId)){updateEventDayBrowser(c.channelId)
}Page.current.clear(true,false);
while(xhrsWaiting.pop()){}selectedChannel=c;
setCookie();
if(selectedChannel.isLoaded&&Page.current.pageName!="tabNearest"){updateResultsHeader(selectedChannel.length,"results_on_map_area");
Page.current.render(selectedChannel)
}else{Page.current.load()
}if(a){showEventDayBrowser()
}}}function channelClick(b,a){displayChannel(b);
if(a){showSubchannels(".channel_"+b.channelId+".parent",".channel_"+b.channelId+".subchannel");
selectChannel(".channel_"+b.channelId+".parent")
}else{selectChannel(".channel_"+b.channelId)
}}function addBookmarkInfo(){dojo.byId("channel_list").innerHTML+='<div><p class="smallprint">'+labels.bookmark_info+"</p></div>"
}function setEventLoadingMode(e){var d,c,b,a;
if(e==3){dojo.query("#weekdaySelection").addClass("hidden");
dojo.query("#eventCalendar").removeClass("hidden")
}if(e==2){d=dojo.query("#weekdaySelection div.clickable");
d.addClass("selected");
d.removeClass("clickable");
for(c=0;
c<d.length;
c++){d[c].onclick=null
}}if(channels.srch_events.mode==2){d=dojo.query("#weekdaySelection div.selected");
d.removeClass("selected");
d.addClass("clickable");
for(c=0;
c<d.length;
c++){d[c].onclick=function(){selectWeekday(this)
};
b=d[c].nextSibling;
while(b.nodeType!=1){b=b.nextSibling
}a=b.innerHTML.split(".");
if(globalDate.getDate()==a[0]&&globalDate.getMonth()==a[1]-1){d[c].className+=" selected"
}}}if(channels.srch_events.mode==3){dojo.query("#weekdaySelection").removeClass("hidden");
dojo.query("#eventCalendar").addClass("hidden")
}channels.srch_events.mode=e
}function setChannel(e){if(selectedChannel.channelId==channels[e].channelId){return
}selectedChannel=channels[e];
var b=e.substring(0,e.indexOf("_")),a=dijit.byId("findaccordion"),d=dijit.byId("channel_"+b);
a.selectChild(d);
if(e.indexOf("_",e.indexOf("_")+1)==-1){showSubchannels(".channel_"+e+".parent",".channel_"+e+".subchannel");
selectChannel(".channel_"+e+".parent")
}else{var c=e.substring(0,e.indexOf("_",e.indexOf("_")+1));
selectChannel(".channel_"+e);
showSubchannels(".channel_"+c+".parent",".channel_"+c+".subchannel")
}if(Common.isChildOf("srch_events",selectedChannel.channelId)){showEventDayBrowser()
}}function selectWeekday(d){if(d.className.match("selected")){return
}dojo.query("#weekdayContainer div.selected").removeClass("selected");
d.className+=" selected";
var c=d.nextSibling;
while(c.nodeType!=1){c=c.nextSibling
}var b=c.innerHTML.split(".");
var a=new Date();
a.setDate(b[0]);
if(a.getMonth()==11&&b[1]-1==0){a.setFullYear(a.getFullYear()+1)
}a.setMonth(b[1]-1);
Common.addTrackedEvent("DayClick;"+new Date().getTime()+";"+cookie.uid+";"+a.getDay());
setGlobalDate(a)
}function resetWeekdaySelection(){var g=new Date(globalDate),d=g.getDay(),e=g.getDate()+"."+(g.getMonth()+1)+".",c=dojo.query("#weekdayContainer div.columnContainer"),f=c.length,a=dijit.byId("eventFrom");
a.attr("value",new Date(g));
for(var b=0;
b<f;
b++){dojo.query("div",c[b]).addClass("weekdayShift"+(d+b));
dojo.query("span",c[b])[0].innerHTML=e;
if(g.getDay()==0){dojo.query("span",c[b]).addClass("textred")
}g.setDate(g.getDate()+1);
e=g.getDate()+"."+(g.getMonth()+1)+".";
c.at(b).removeClass("hidden")
}a=dijit.byId("eventTo");
a.attr("value",new Date(g))
}function setCookieChannel(b){try{if(b&&b!="find_all"){if(b!="searchResults"&&b.indexOf("collectionsN_kia")==-1&&channels[b]){setChannel(b)
}}}catch(a){}}function updateBookmarkChannel(){while(channels.list_bookmarks.pop()){}for(var a=0;
a<bookmarks.length;
a++){if(Page.current.pageName=="tabNearest"||onMap(bookmarks[a].marker.latitude,bookmarks[a].marker.longitude)){channels.list_bookmarks.push(bookmarks[a])
}}channels.list_bookmarks.isLoaded=true;
updateChannel("list_bookmarks",channels.list_bookmarks.length)
}function displayBookmarks(){Page.current.clear(true,false);
updateBookmarkChannel();
setSelectedResultHeaderChannel();
updateResultsHeader(channels.list_bookmarks.length,"results_on_map_area");
Page.current.render(channels.list_bookmarks)
}function expandMapPlayer(){dojo.addClass("channels","hidden");
dojo.addClass("routecontrols","hidden");
dojo.addClass("player","wideMap");
dojo.addClass("controls","wideMap");
dojo.addClass("daySelection","wideMap");
dojo.removeClass("restoreMap","hidden");
dojo.addClass("expandMap","hidden")
}function restoreMapPlayer(){if(Page.current.pageName=="tabRoutes"){dojo.removeClass("routecontrols","hidden")
}else{dojo.removeClass("channels","hidden");
dijit.byId("findaccordion").resize()
}dojo.removeClass("player","wideMap");
dojo.removeClass("controls","wideMap");
dojo.removeClass("daySelection","wideMap");
dojo.removeClass("expandMap","hidden");
dojo.addClass("restoreMap","hidden")
}function parseSinglePOI(e){var a=false;
if(e.count==0){var g=60.17039161,h=24.94148241,f=15;
if(!player){createMap(g,h,f);
a=true
}setCity(true,f,g,h);
setChannel("srch_shops");
displayTab(PlacesPage);
if(a){loadBookmarks(cookie)
}}else{if(!player){createMap(parseFloat(e.item.marker.latitude),parseFloat(e.item.marker.longitude),15);
a=true;
clearHandlers()
}else{clearHandlers();
mapMoveTo(parseFloat(e.item.marker.latitude),parseFloat(e.item.marker.longitude),15)
}RoutesPage.setShowBusStops(false);
RoutesPage.selectTab(Common.getUrlParam("rt"));
RoutesPage.clear(true,true);
RoutesPage.singlePOIStyles=true;
displayTab(RoutesPage);
setCity(true,15,e.item.marker.latitude,e.item.marker.longitude);
channels.find_all.push(e.item);
if(e.item.channels.length>0&&!targetCollection){if(e.coll){if(!channels[e.coll.id]){var d={channels:[{id:e.coll.id,name:e.coll.name}]};
if(e.collP){d.channels.push({id:e.collP.id,name:e.collP.name});
d.channels.push(d.channels.shift())
}Common.parseCollections(d,addChannel,updateChannel)
}setChannel(e.coll.id)
}else{var c=0;
for(var b=0;
b<e.item.channels.length;
b++){if(e.item.channels[b].indexOf("_")!=e.item.channels[b].lastIndexOf("_")){c=b;
break
}}setChannel(e.item.channels[c])
}}Common.pushItem(selectedChannel,e.item);
updateResultsHeader(selectedChannel.length,"results_on_map_area");
Page.current.render(selectedChannel);
dojo.addClass("latestBoxContainer","hidden");
RoutesPage.setSinglePOIStyles(e.item);
if(a){loadBookmarks(cookie)
}setTimeout(addHandlers,500)
}}function resultItemContains(c,a){for(var b=0;
b<c.length;
b++){if(c[b].innerHTML==a){return b+1
}}return false
}function updateFavorite(b){var a=dojo.query("div.resultItem.id"+b.id+" img.my_fav");
if(b.bookmarked){a.removeClass("hidden");
dojo.removeClass("my_fav_infoscreen","hidden")
}else{a.addClass("hidden");
dojo.addClass("my_fav_infoscreen","hidden")
}}function removeBookmark(c){trackActionCommand("RemoveBookmark",c);
var b;
for(var a=0;
a<bookmarks.length;
a++){if(bookmarks[a].id==c){b=bookmarks[a];
if(Page.current.items[b.id]){Page.current.items[b.id].bookmarked=false;
b.bookmarked=false
}bookmarks.splice(a,1);
a--
}}if(c.indexOf("e")){for(a=0;
a<cookie.bookmarkIds.length;
a++){if(cookie.bookmarkIds[a]==c){cookie.bookmarkIds.splice(a,1);
a--
}}}else{for(a=0;
a<cookie.bookmarkEids.length;
a++){if(cookie.bookmarkEids[a]==c){cookie.bookmarkEids.splice(a,1);
a--
}}}saveCookie();
infoscreenActionMenu(b);
updateFavorite(b);
Page.current.updateBookmarks()
}function saveBookmark(b){trackActionCommand("SaveBookmark",b);
if(!cookie.bookmarkIds){cookie.bookmarkIds=new Array()
}if(!cookie.bookmarkEids){cookie.bookmarkEids=new Array()
}var a=0;
if(b.indexOf("e")){a=cookie.bookmarkIds.push(b)
}else{cookie.bookmarkEids.push(b)
}saveCookie();
return addBookmark(b,a)
}function addBookmark(c,a){var b=Page.current.items[c];
if(!b){return false
}b.bookmarked=true;
if(a){bookmarks.splice(a,0,b)
}else{bookmarks.push(b)
}Page.current.updateBookmarks();
infoscreenActionMenu(b);
updateFavorite(b);
return true
}function getInitialBookmarks(){dojo.xhrGet({url:"/logos/bookmarks/"+server+"InitialBookmark.json",handleAs:"json",load:function(a){cookie.bookmarkIds=Common.cleanArray(a.bookmarkIds);
if(!cookie.bookmarkEids){cookie.bookmarkEids=new Array()
}saveCookie();
loadBookmarks(cookie);
return a
},error:function(){}})
}function loadBookmarks(b){if(window.adforeObj.firstTime&&b&&!b.bookmarkIds){console.log("loading initial bookmarks (this should only happen once)");
getInitialBookmarks();
return
}if(!b||!b.bookmarkIds||!b.bookmarkEids){console.log("loading empty bookmarks");
bookmarks=new Array();
return
}b.bookmarkIds=Common.cleanArray(b.bookmarkIds);
b.bookmarkEids=Common.cleanArray(b.bookmarkEids);
bookmarks=new Array();
while(channels.list_bookmarks.pop()){}var a=(b.bookmarkIds.length?"ids="+b.bookmarkIds:"")+(b.bookmarkEids.length?"&eids="+b.bookmarkEids:"");
if(a){dojo.xhrGet({url:"/resources/pois/bookmarks?"+a,handleAs:"json",load:function(d,c){for(var e=0;
e<d.items.length;
e++){bookmarks.push(d.items[e])
}Page.current.updateBookmarks();
return d
},failOk:false})
}else{Page.current.updateBookmarks()
}}function actionCenterMap(c,a,b){if(!b){displayTab(PlacesPage)
}player.setCenter({longitude:a,latitude:c},"none")
}function actionRouteHere(c){trackActionCommand("RouteHere",c);
RoutesPage.resetRoute();
var b=Page.current.items[c],e;
if(b.address){e=b.address
}else{e=b.name
}dijit.byId("routeTo").attr("value",e);
storeRouteLocation(RoutesPage.routeToStore,e,b.marker);
displayTab(RoutesPage);
var a=player.objects.get(1),d=a.objects.get(0);
d.set("coordinate",player.center);
d.set("visibility",true);
routeMarkerListener(null,d,true);
clearHandlers();
zoomToMapRoute();
addHandlers();
Page.current.render([b]);
dojo.addClass("latestBoxContainer","hidden");
RoutesPage.setSinglePOIStyles(b)
}function actionMapHere(h){trackActionCommand("MapHere",h);
var k=Page.current.items[h];
if(!k){console.log("Item not found...");
return
}clearHandlers();
mapMoveTo(parseFloat(k.marker.latitude),parseFloat(k.marker.longitude),15);
addHandlers();
PlacesPage.lastPos=getPosition();
displayTab(PlacesPage);
Page.current.clear(true,true);
setCity(true,15,k.marker.latitude,k.marker.longitude);
channels.find_all.push(k);
var f=player.getViewBounds(),g=f.bottomRight.latitude,a=f.topLeft.longitude,j=f.topLeft.latitude,c=f.bottomRight.longitude,l=player.zoomLevel;
var b="/resources/pois/channels/counts?swlat="+g+"&swlon="+a+"&nelat="+j+"&nelon="+c+"&z="+l+"&ts="+globalDate.getTime()+"&m="+Common.getEventLoadingMode();
xhrs.push(dojo.xhrGet({url:b,handleAs:"json",load:function(m,i){parseChannelCounts(m);
return m
},failOk:true}));
if(k.channels.length>0){var e=-1;
for(var d=0;
d<k.channels.length;
d++){if((k.channels[d].indexOf("_")!=k.channels[d].lastIndexOf("_")||k.channels[d].indexOf("collections")!=-1)&&channels[k.channels[d]]){if(k.channels[d].indexOf("_")!=k.channels[d].lastIndexOf("_")&&k.channels[d].indexOf("collections")!=-1){e=d;
break
}else{if(k.channels[d].indexOf("collections")!=-1){e=d
}else{if(e==-1){e=d
}}}}}if(e==-1){e=0
}setChannel(k.channels[e])
}Common.pushItem(selectedChannel,k);
updateResultsHeader(selectedChannel.length,"results_on_map_area");
Page.current.render(selectedChannel);
hideInfoscreen()
}function infoscreenActionMenu(b){if(!b.id.indexOf("rp")){RoutesPage.loadStop(b);
return
}var a=generateActionCommands(b,"actionMenu","inlineFloatLeft","");
a+='<div class="inlineFloatLeft"><div class="actionMenu clickable lastActionMenu" onclick="showPoiErrorScreen();">';
a+=labels.infoscreen_poierror+"</div></div>";
dojo.byId("actionMenu").innerHTML=a
}function resultActionCommands(c){var b=Page.current.items[c];
var a="<div onclick=\"showInfoscreen('"+c+"');closeActionCommand();\"";
a+='class="actionCommand clickable"><img class="actionMenuIcon" src="blank16.png" />'+labels.actionmenu_infoscreen+"</div>";
a+=generateActionCommands(b,"actionCommand","","closeActionCommand();");
return a
}function generateActionCommands(l,b,j,k,c){var a='<div class="'+b+" clickable "+j+'" onclick="',e='"><img class="actionMenuIcon" src="',h="",d=l.bookmarked;
k="');"+k;
if((c&&!d)||!c){h+=a+(d?"removeBookmark":"saveBookmark")+"('"+l.id+(c?"');RoutesPage.updateSmallActionMenu('"+k:k)+e+(d?"poi_fav_no.png":"poi_fav.png")+'" />'+(d?labels.actionmenu_remove_favorite:labels.actionmenu_add_favorite)+"</div>"
}if(!c){h+=a+"actionMapHere('"+l.id+k+e+'poi_map.png" />'+labels.actionmenu_map_here+"</div>"+a+"actionRouteHere('"+l.id+k+e+'poi_bus.png" />'+labels.actionmenu_route_here+"</div>"+a+"trackActionCommand('SendLink', '"+l.id+k+'"><a href="mailto:?subject='+l.name+"&body=http%3A%2F%2Fwww.tassa.fi%2F%3Fid%3D"+l.id+e+'poi_email.png" />&raquo; '+labels.actionmenu_email+"</a></div>"
}if(c&&!d){return h
}var i=l.name;
var g="http://www.tassa.fi/?id="+l.id;
if(i!=null){i=i.replace("ä","&auml;");
i=i.replace("Ä","&Auml;");
i=i.replace("ö","&ouml;");
i=i.replace("Ö","&Ouml;");
g+="&k="+i
}var f=encodeURIComponent(g);
h+=a+"\"trackActionCommand('FacebookLink', '"+l.id+k+'"><a target="_blank" href="http://www.facebook.com/sharer.php?u='+f+e+'poi_fb.png" />&raquo; '+labels.actionmenu_facebook+"</a></div>";
return h
}function closeActionCommand(){dojo.query("#resultsActionCommand").orphan()
}function displayActionCommand(h,d,c){var b,a=170,g,f,e;
if(!d){d=window.event
}g=d.target||d.srcElement;
f=(g.offsetLeft-a-8+g.offsetWidth);
e=(g.offsetTop+g.offsetHeight);
if(dojo.isIE==7){e=e+g.offsetParent.offsetTop
}b=dojo.byId("resultsActionCommand");
if(!b){b=dojo.create("div",{id:"resultsActionCommand","class":"closeablePopup dijitPopup "+h});
b.style.left=f+"px";
b.style.top=e+"px";
b.style.width=a+"px";
b.innerHTML=resultActionCommands(h);
if(c){dojo.place(b,dojo.byId(c))
}else{if(Page.current.pageName=="tabNearest"){dojo.place(b,dojo.byId("nearestresults"))
}else{dojo.place(b,dojo.byId("results"))
}}}else{if(dojo.hasClass(dojo.byId("resultsActionCommand"),h)){dojo.query("#resultsActionCommand").orphan()
}else{b.className="closeablePopup dijitPopup "+h;
b.style.left=f+"px";
b.style.top=e+"px";
b.style.width=a+"px";
b.innerHTML=resultActionCommands(h);
if(c){dojo.place(b,dojo.byId(c))
}}}}function sortItems(d,c){if(d.hasAd){if(!c.hasAd){return -1
}else{if(d.openingHours.length>0){if(c.openingHours.length==0){return -1
}else{return sortOpeningHours(d,c)
}}else{if(c.openingHours.length>0){return 1
}}return 0
}}else{if(c.hasAd){return 1
}else{if(d.hasIm){if(!c.hasIm){return -1
}else{if(d.openingHours.length>0){if(c.openingHours.length==0){return -1
}else{return sortOpeningHours(d,c)
}}else{if(c.openingHours.length>0){return 1
}}return 0
}}else{if(c.hasIm){return 1
}}if(d.openingHours.length>0){if(c.openingHours.length==0){return -1
}else{return sortOpeningHours(d,c)
}}else{if(c.openingHours.length>0){return 1
}}return 0
}}}function sortOpeningHours(l,k){if(l.id.indexOf("e")==-1||k.id.indexOf("e")==-1){return 0
}var h,e,d,j,g,i,c,f;
h=Common.isEventOpen(l.openingHours);
e=Common.isEventOpen(k.openingHours);
d=Common.parseDate(h.startDate);
j=Common.parseDate(h.endDate);
g=Common.parseDate(e.startDate);
i=Common.parseDate(e.endDate);
if(h.startTime!=null){c=Common.parseTime(h.startTime)
}else{c=d
}if(e.startTime!=null){f=Common.parseTime(e.startTime)
}else{f=g
}if(d.getTime()==j.getTime()){if(g.getTime()==i.getTime()){if(d.getTime()==g.getTime()){return c.getTime()-f.getTime()
}else{return d.getTime()-g.getTime()
}}else{return -1
}}else{if(g.getTime()==i.getTime()){return 1
}return j.getTime()-i.getTime()
}}function showLatestMessageOnMap(){if(window.latestMessage.im.poiId){targetPOIid=window.latestMessage.im.poiId;
Common.loadTargetPOI(parseSinglePOI)
}}function displayLatest(b){dojo.query("#latestBox .messageHeader")[0].innerHTML=b.im.header;
Common.addTrackedEvent("ImShowL;"+new Date().getTime()+";"+cookie.uid+";"+b.im.id);
if(b.im.body){dojo.query("#latestBox .messageBody")[0].innerHTML=b.im.body
}else{dojo.query("#latestBox .messageBody")[0].innerHTML=""
}dojo.query("#latestBox span.latestAuthor")[0].innerHTML=b.im.author;
var c=new Date(parseInt(b.im.timestamp)),a=c.getMinutes();
dojo.query("#latestBox span.latestTimestamp")[0].innerHTML=c.getDate()+"."+(c.getMonth()+1)+". "+c.getHours()+":"+(a<10?"0"+a:a);
window.latestMessage=b
}function showInfoscreen(c){var b=Page.current.items[c];
resetInfoscreen();
Common.addTrackedEvent("POIClick;"+new Date().getTime()+";"+cookie.uid+";"+b.id+";"+resultItemContains(dojo.query("#results div.resultItem span.iidee"),b.id)+";"+selectedChannel.length);
dijit.byId("infoscreenAdTab").domNode.innerHTML="";
dojo.addClass("infoscreenMessageBox","hidden");
updateGlobalDate();
var a="/resources/shop/"+b.id+"/allads/"+globalDate.getTime()+"?l="+djConfig.locale;
if(b.hasAd){dojo.removeClass("infoscreenAdsLoading","hidden")
}infoXhr=dojo.xhrGet({url:a,itemId:b.id,handleAs:"json",load:function(e,d){infoXhr=null;
parseInfoscreenAds(e,d.args.itemId);
return e
},error:function(){infoXhr=null;
dojo.addClass("infoscreenAdsLoading","hidden")
},failOk:true});
parseInfoscreen(b);
infoscreenActionMenu(b);
dojo.removeClass("infoscreensemimodalpane","tabHidden");
dojo.removeClass("infoscreenwrapper","tabHidden")
}function resetInfoscreen(){if(infoXhr){infoXhr.cancel();
infoXhr=null
}dojo.query("#infoscreensemimodalpane").addClass("tabHidden");
dojo.query("#infoscreenpoierrsent").addClass("hidden");
dojo.query("#infoscreenpoierrsenterr").addClass("hidden");
if(Page.current.pageName=="tabRoutes"){dojo.query("#routes").removeClass("hidden");
dojo.query("#resultsContainer").addClass("hidden")
}var a=dijit.byId("infoscreenTabContainer");
a.resize({h:35});
dojo.addClass(a.domNode,"dijitHidden")
}function hideInfoscreen(a){dojo.query("#infoscreenwrapper").addClass("tabHidden");
resetInfoscreen();
clearStackResults()
}function displayStackResults(b){dojo.query("#results div.resultItem").addClass("hidden");
for(var a=0;
a<b.length;
a++){dojo.query("#results div.resultItem.id"+b[a]).removeClass("hidden")
}updateResultsHeader(b.length,"results_on_selected_stack")
}function clearStackResults(){dojo.query("#results div.resultItem").removeClass("hidden");
updateResultsHeader(selectedChannel.length,"results_on_map_area")
}function clearCookie(){var a;
for(a in cookie){if(a!="uid"&&a!="latitude"&&a!="longitude"&&a!="zoomScale"){delete cookie[a]
}}dojo.cookie("adforeZoomScalePosition",dojo.toJson(cookie),{expires:3650,path:"/"})
}function showTabHint(c,a,b){if(!dojo.hasClass(c,"tabSelectedIcon")){dojo.addClass(c,"transparent")
}dojo.query("#headerSelectedTab").addClass("hidden");
dojo.query("#headerHintTab").addClass(a+" transparent");
dojo.query("#headerSelectedTabTitle span.selected").addClass("hidden");
dojo.query("#headerSelectedTabTitle span."+b).addClass("transparent");
dojo.query("#headerSelectedTabTitle span."+b).removeClass("hidden")
}function hideTabHint(b,a){dojo.removeClass(b,"transparent");
dojo.query("#headerSelectedTab").removeClass("hidden");
dojo.query("#headerHintTab").removeClass(a+" transparent");
dojo.query("#headerSelectedTabTitle span.transparent").addClass("hidden");
dojo.query("#headerSelectedTabTitle span.transparent").removeClass("transparent");
dojo.query("#headerSelectedTabTitle span.selected").removeClass("hidden")
}function displayTab(a){if(Page.current.pageName==a.pageName){return
}Common.addTrackedEvent("TabClick;"+new Date().getTime()+";"+cookie.uid+";"+a.pageName);
Page.current.hide();
Page.current=a;
Page.current.show()
}function setGlobalDate(a){globalDate=a;
Common.parseWeather(currentWeather);
Page.current.clear(true,false);
Page.current.render(selectedChannel);
var b;
for(b in channels){if(Common.isChildOf("srch_events",b)){channels[b].isLoaded=false
}}if(containsEvents(selectedChannel.channelId)){Page.current.load()
}}function updateGlobalDate(){var a=new Date();
a.setFullYear(globalDate.getFullYear(),globalDate.getMonth(),globalDate.getDate());
globalDate=a
}function setResultHeaderDate(){var b="";
if(Common.getEventLoadingMode()==3){dojo.addClass("resultHeaderDate","dates");
dojo.addClass("resultHeaderDateIcon","hidden");
b=dojo.byId("eventFrom").value+" - "+dojo.byId("eventTo").value
}else{if(Common.getEventLoadingMode()==2){dojo.addClass("resultHeaderDate","dates");
dojo.addClass("resultHeaderDateIcon","hidden");
var a=new Date();
b=a.getDate()+"."+(a.getMonth()+1)+"."+a.getFullYear();
a.setDate(a.getDate()+7);
b+=" - "+a.getDate()+"."+(a.getMonth()+1)+"."+a.getFullYear()
}else{dojo.removeClass("resultHeaderDate","dates");
dojo.byId("resultHeaderDateIcon").style.backgroundPosition=(-43*globalDate.getDay())+"px -30px";
dojo.removeClass("resultHeaderDateIcon","hidden");
b=globalDate.getDate()+"."+(globalDate.getMonth()+1)+"."+globalDate.getFullYear()
}}dojo.byId("resultHeaderDate").innerHTML=b;
if(Common.isChildOf("collections",selectedChannel.channelId)){dojo.byId("resultHeaderChannelIcon").src="/logos/collections.png"
}else{dojo.byId("resultHeaderChannelIcon").src="/logos/"+selectedChannel.channelId+".png"
}}function updateResultsHelp(a,b){if(b=="results_too_many"){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden");
dojo.query("#resultsHelpZoom").removeClass("hidden").addClass("shown");
dojo.query("#resultsHelpTypes").removeClass("hidden").addClass("shown")
}else{if(b=="results_too_wide"){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden");
dojo.query("#resultsHelpZoom").removeClass("hidden").addClass("shown")
}else{if((a==0)&&(channels.find_all.length==0)&&(b!="results_retrieving")){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden");
dojo.query("#resultsHelpMove").removeClass("hidden").addClass("shown")
}else{if((a==0)&&(b!="results_retrieving")){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden");
dojo.query("#resultsHelpTypes").removeClass("hidden").addClass("shown");
dojo.query("#resultsHelpMove").removeClass("hidden").addClass("shown")
}else{if((b=="results_on_map_area")||(b=="results_on_selected_stack")){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden").removeClass("shown")
}else{dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden").removeClass("shown")
}}}}}if((selectedChannel.channelId=="list_bookmarks")&&(channels.list_bookmarks.length==0)){dojo.query("#resultsContainer .resultsHelp.shown").addClass("hidden").removeClass("shown");
dojo.query("#resultsHelpBookmark").removeClass("hidden").addClass("shown")
}else{dojo.query("#resultsHelpBookmark").addClass("hidden").removeClass("shown")
}}function updateResultsHeader(a,b){dojo.byId("resultsCounter").innerHTML=a;
dojo.byId("resultsHeaderText").innerHTML=labels[b];
updateResultsHelp(a,b);
setResultHeaderDate()
}function getCityLocation(b){var a=dijit.byId("controlsCityField");
if(b){a.ad4onchange=true
}if(a.isValid()&&(a.value!="0,0")){var c=a.value;
Common.addTrackedEvent("CityClick;"+new Date().getTime()+";"+cookie.uid+";"+a.attr("displayedValue"));
if(b&&!dojo.hasClass("controlsAddressField","placeholder")){getAddressLocation(true)
}else{if(a.ad4onchange){mapMoveTo(parseFloat(c.substring(0,c.indexOf(","))),parseFloat(c.substring(c.indexOf(",")+1)));
a.ad4onchange=false;
cityChanged(a.attr("displayedValue"))
}}}}function showPoiErrorScreen(){var b=dojo.query("#infoscreenitemid")[0].innerHTML;
var a=Page.current.items[b];
dojo.query("#poierrormodalpane").removeClass("hidden");
dojo.query("#poierrorscreenwrapper").removeClass("hidden");
dojo.query("#poierrorscreen .poierrorscreenheader")[0].innerHTML=a.name
}function hidePoiErrorScreen(){dojo.query("#poierrormodalpane").addClass("hidden");
dojo.query("#poierrorscreenwrapper").addClass("hidden")
}function sendPoiError(){var b=dojo.query("#infoscreenitemid")[0].innerHTML;
var a="/feedback/poierror/"+b;
dojo.xhrPost({url:a,postData:encodeURIComponent(dojo.query("#poierrorscreenInputBox")[0].value),handleAs:"text",load:function(){dojo.query("#infoscreenpoierrsent").removeClass("hidden");
dojo.query("#poierrorscreenInputBox")[0].value=""
},error:function(){dojo.query("#infoscreenpoierrsenterr").removeClass("hidden")
}});
dojo.query("#poierrormodalpane").addClass("hidden");
dojo.query("#poierrorscreenwrapper").addClass("hidden")
}var cityMustFind=false;
function setCityCallback(c){var e=function(){if(cityMustFind||dijit.byId("controlsCityField").attr("displayedValue")==defaultCity){cityStore.fetch({onComplete:getNearestCity})
}};
if(c&&c.places&&c.places.length>0){var d=false;
if(c.places[0].address.city){for(var b=0;
b<cityJson.items.length;
b++){if(cityJson.items[b].name==c.places[0].address.city){d=true;
break
}}}if(d){parseCity(c.places[0].address)
}else{if(c.places[0].address.postCode){var a="/resources/gc/citycode?c="+c.places[0].address.postCode;
if(cityXhr){cityXhr.cancel()
}cityXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(g,f){cityXhr=null;
parseCity(g);
return g
},error:e,failOk:true})
}else{e()
}}}else{e()
}}function setCity(d,a,b,c){if(a<8){parseCity({city:defaultCity})
}else{cityMustFind=d;
Common.reverseGeocodeCall(b,c,"setCityCallback")
}}function getNearestCity(a){var h,f=Number.MAX_VALUE,e,d,g,b,c;
if(!player){h={latitude:cookie.latitude,longitude:cookie.longitude};
c=cookie.zoomScale
}else{h=player.center;
c=player.zoomLevel
}for(b=0;
b<a.length;
b++){d=cityStore.getValue(a[b],"value");
g=Common.distanceBetweenLatLon(h.latitude,h.longitude,parseFloat(d.substring(0,d.indexOf(","))),parseFloat(d.substring(d.indexOf(",")+1)));
if(g<f){f=g;
e=d
}}if(e=="60.212,24.726"){if(Common.distanceBetweenLatLon(h.latitude,h.longitude,parseFloat(e.substring(0,e.indexOf(","))),parseFloat(e.substring(e.indexOf(",")+1)))>1000){e="60.209,24.658"
}}if(c<8){e="0,0"
}setDisplayedCity(e,null)
}function setDisplayedCity(e,g){var a,d;
if(g){a="displayedValue";
d=g
}if(e){a="value";
d=e
}var b=dijit.byId("controlsCityField");
if(b.attr(a)!=d){var f=b.onChange;
b.onChange=function(i){var h=dijit.byId("controlsCityField");
h.onChange=f
};
b.attr(a,d);
var c=dojo.byId("controlsAddressField");
Common.addPlaceholder(c,labels.controlsAddressField_placeholder);
c.blur();
cityChanged(b.attr("displayedValue"))
}}function parseCity(b){if(b&&b.city){var a=dijit.byId("controlsCityField");
if(a.attr("displayedValue")!=b.city){var d=a.onChange;
a.onChange=function(f){var e=dijit.byId("controlsCityField");
e.onChange=d
};
a.attr("displayedValue",b.city);
var c=dojo.byId("controlsAddressField");
if(dojo.hasClass(c,"home")){dojo.removeClass(c,"home")
}else{Common.addPlaceholder(c,labels.controlsAddressField_placeholder);
c.blur()
}cityChanged(b.city)
}}}function trackAccordionClick(a){if(!cookie){return
}Common.addTrackedEvent("ModeChange;"+new Date().getTime()+";"+cookie.uid+";"+a)
}function trackActionCommand(a,b){Common.addTrackedEvent(a+";"+new Date().getTime()+";"+cookie.uid+";"+b)
}function pkCheck(){var a=dijit.byId("controlsCityField").attr("displayedValue");
if(a=="Helsinki"||a=="Espoo"||a=="Kauniainen"||a=="Vantaa"){return true
}else{return false
}}function showAddressLocationError(){dojo.query("#controlsNotFound").removeClass("hidden");
setTimeout('dojo.query("#controlsNotFound").addClass("hidden");',3000)
}function getAddressLocation(a){var f=dijit.byId("controlsCityField").attr("displayedValue"),e=dojo.query("#controlsAddressField")[0],c,b;
if(dojo.hasClass(e,"placeholder")){getCityLocation(true);
return
}if(f=="Helsinki"||f=="Espoo"||f=="Kauniainen"||f=="Vantaa"||f=="Tampere"){c=e.value+","+f;
b="/resources/route/ytv/gl?a="+encodeURIComponent(c)+"&u="+cookie.uid+"&c="+(f=="Tampere"?TAMPERE:HELSINKI);
dojo.xhrGet({url:b,handleAs:"json",load:function(i,h){dojo.query("#controlsNotFound").addClass("hidden");
parseLocation(i);
var g=dijit.byId("controlsCityField");
g.ad4onchange=false;
if(a){cityChanged(g.attr("displayedValue"))
}return i
},error:function(h,g){showAddressLocationError();
getCityLocation(false)
},failOk:true})
}else{c=e.value+", "+f;
var d=new ovi.mapsapi.search.Manager();
d.addObserver("state",geoCallBack);
d.geocode(c);
d.cityChanged=a
}}function geoCallBack(c,b,d){if(d=="finished"){if(c.locations.length>0){dojo.addClass("controlsNotFound","hidden");
var e=getZoomScale();
if(e<15){e=15
}mapMoveTo(c.locations[0].displayPosition.latitude,c.locations[0].displayPosition.longitude,e);
var a=dijit.byId("controlsCityField");
a.ad4onchange=false;
if(c.cityChanged){cityChanged(a.attr("displayedValue"))
}}else{showAddressLocationError();
getCityLocation(false)
}}else{if(d=="failed"){showAddressLocationError();
getCityLocation(false)
}}}function parseLocation(a){var b=getZoomScale();
if(b<15){b=15
}mapMoveTo(parseFloat(a.location.latitude),parseFloat(a.location.longitude),b)
}function showEventDayBrowser(){dojo.query("#daySelection").style("left","20px");
dojo.query("#weekdaySelection").style("left","309px");
dojo.query("#channels").style("bottom","117px");
dijit.byId("findaccordion").resize();
updateEventDayBrowser(selectedChannel.channelId);
dojo.query("#eventDayBrowser").removeClass("hidden");
var b=dojo.query("#eventDayRadios input"),a;
for(a=0;
a<b.length;
a++){if(b[a].value==1){b[a].checked=true
}}}function updateEventDayBrowser(a){dojo.byId("eventDayImg").src="/logos/"+a+".png"
}function hideEventDayBrowser(){dojo.query("#daySelection").style("left","304px");
dojo.query("#weekdaySelection").style("left","25px");
dojo.query("#channels").style("bottom","41px");
dijit.byId("findaccordion").resize();
dojo.query("#eventDayBrowser").addClass("hidden");
setEventLoadingMode(1);
var a;
for(a in channels){if(Common.isChildOf("srch_events",a)){channels[a].isLoaded=false
}}}function getEventFrom(){var a=dijit.byId("eventFrom");
if(a.value!=null){return a.value.getTime()
}else{return new Date().getTime()
}}function getEventTo(){var a=dijit.byId("eventTo");
if(a.value!=null){return a.value.getTime()
}else{return 2147483647000
}}function setHomeObj(d,a,b,c){cookie.home={address:a,city:d,latitude:b,longitude:c};
storeHome(a);
dojo.query(".routeHome").addClass("hidden");
saveCookie()
}function parseHomeLatLon(a){if(a){setHomeObj(dijit.byId("controlsCityField").attr("displayedValue"),dojo.byId("controlsAddressField").value,parseFloat(a.location.latitude),parseFloat(a.location.longitude))
}else{showAddressLocationError()
}}function setHomeLatLon(b,a,c){if(c=="finished"){if(b.locations.length>0){setHomeObj(dijit.byId("controlsCityField").attr("displayedValue"),dojo.byId("controlsAddressField").value,b.locations[0].displayPosition.latitude,b.locations[0].displayPosition.longitude)
}else{showAddressLocationError()
}}else{if(c=="failed"){showAddressLocationError()
}}}function setHomeCityAddress(){dojo.query("#controlsNotFound").addClass("hidden");
var a=dojo.byId("controlsAddressField");
if(dojo.hasClass(a,"placeholder")){showAddressLocationError();
return
}var e=dijit.byId("controlsCityField").attr("displayedValue"),c,b;
if(e=="Helsinki"||e=="Espoo"||e=="Kauniainen"||e=="Vantaa"||e=="Tampere"){c=a.value+","+e;
b="/resources/route/ytv/gl?a="+encodeURIComponent(c)+"&u="+cookie.uid+"&c="+(e=="Tampere"?TAMPERE:HELSINKI);
dojo.xhrGet({url:b,handleAs:"json",load:function(g,f){parseHomeLatLon(g);
return g
},error:function(g,f){showAddressLocationError();
return g
},failOk:true})
}else{c=a.value+", "+e;
var d=new ovi.mapsapi.search.Manager();
d.addObserver("state",setHomeLatLon);
d.geocode(c)
}}function goHome(){var b=getHome();
setDisplayedCity(null,b.city);
var a=dojo.byId("controlsAddressField");
Common.removePlaceholder(a);
dojo.addClass(a,"home");
a.value=b.address;
mapMoveTo(parseFloat(b.latitude),parseFloat(b.longitude))
}function setHome(b){var a=dojo.query("#routeHomeField"+b)[0].value,e;
if(a.indexOf(",")!=-1){e=a.substring(a.indexOf(",")+1);
a=a.substring(0,a.indexOf(","))
}else{dojo.query(".routeHomeCityError").removeClass("hidden");
return
}dojo.query(".routeHomeError").addClass("hidden");
dojo.query(".routeHomeCityError").addClass("hidden");
if(RoutesPage.publicRouting){dojo.xhrGet({url:"/resources/route/ytv/gl?a="+encodeURIComponent(a+(e?", "+e:""))+"&u="+cookie.uid+"&c="+Common.getRouteServiceBySelection(),handleAs:"json",load:function(f){setHomeObj(f.city,f.name+(f.number?" "+f.number:""),f.location.latitude,f.location.longitude)
},error:function(){dojo.query(".routeHomeError").removeClass("hidden")
},failOk:true})
}else{var c=a+(e?", "+e:"");
var d=new ovi.mapsapi.search.Manager();
d.addObserver("state",setHomeByRouting);
d.geocode(c)
}}function setHomeByRouting(b,a,c){if(c=="finished"){if(b.locations.length>0){setHomeObj(b.locations[0].address.city,b.locations[0].address.label?b.locations[0].address.label.substring(0,b.locations[0].address.label.indexOf(",")):"",b.locations[0].displayPosition.latitude,b.locations[0].displayPosition.longitude)
}else{dojo.query(".routeHomeError").removeClass("hidden")
}}else{if(c=="failed"){dojo.query(".routeHomeError").removeClass("hidden")
}}}function getHome(){if(cookie.home&&(cookie.home.length>0||cookie.home.address)){if(!cookie.home.address){var a="/resources/route/ytv/gl?a="+encodeURIComponent(cookie.home)+"&u="+cookie.uid+"&c="+HELSINKI;
var b=cookie.home,c=getPosition();
cookie.home=new Object();
cookie.home.address=b;
if(cookie.home.address.indexOf(",")!=-1){cookie.home.city=cookie.home.address.substring(cookie.home.address.indexOf(",")+1);
cookie.home.address=cookie.home.address.substring(0,cookie.home.address.indexOf(","))
}cookie.home.latitude=c.latitude;
cookie.home.longitude=c.longitude;
dojo.xhrGet({url:a,handleAs:"json",load:function(d){cookie.home.latitude=parseFloat(d.location.latitude);
cookie.home.longitude=parseFloat(d.location.longitude);
cookie.home.city=d.city;
cookie.home.address=d.name+(d.number?" "+d.number:"");
saveCookie();
storeHome(cookie.home);
return d
},error:function(){delete cookie.home;
saveCookie();
storeHome(null)
},failOk:true})
}return cookie.home
}return null
}function storeHome(a){storeRouteLocation(RoutesPage.routeFromStore,labels.home,a);
storeRouteLocation(RoutesPage.routeToStore,labels.home,a);
if(a){dojo.addClass("frontpageHomeSaveButton","hidden");
dojo.query("#controlsHomeButtonContainer .hasHome").removeClass("hidden")
}else{dojo.removeClass("frontpageHomeSaveButton","hidden");
dojo.query("#controlsHomeButtonContainer .hasHome").addClass("hidden")
}}function checkHome(d,b,c,a){if(d.attr("value")==labels.home&&!a.getValue(a._itemsByIdentity[labels.home],"value")){dojo.query(c).addClass("hidden");
dojo.query(b).removeClass("hidden");
dojo.query(".routeHomeError").addClass("hidden")
}else{dojo.query(b).addClass("hidden")
}}function storeRouteLocation(a,b,c){if(c&&c.longitude&&c.latitude){c.longitude=parseFloat(c.longitude);
c.latitude=parseFloat(c.latitude)
}if(a._itemsByIdentity&&a._itemsByIdentity[b]){a.setValue(a._itemsByIdentity[b],"value",c)
}else{a.newItem({name:b,value:c});
a.save()
}}function deleteHome(){if(cookie.home){delete cookie.home;
saveCookie()
}storeHome(null)
}function addRouteLocationToCookie(b,c,d){if(b==labels.home){return null
}var a=Common.addRouteLocationToCookieBase(cookie,b,c,d);
if(a&&d){if(RoutesPage.routeFromStore._itemsByIdentity&&RoutesPage.routeFromStore._itemsByIdentity[a.address]){RoutesPage.routeFromStore.deleteItem(RoutesPage.routeFromStore._itemsByIdentity[a.address]);
RoutesPage.routeFromStore.save()
}}else{if(a){if(RoutesPage.routeToStore._itemsByIdentity&&RoutesPage.routeToStore._itemsByIdentity[a.address]){RoutesPage.routeToStore.deleteItem(RoutesPage.routeToStore._itemsByIdentity[a.address]);
RoutesPage.routeToStore.save()
}}}return a
}function deleteRouteLocation(d,a,e){var c=d.attr("value");
if(c==labels.home){deleteHome();
d.attr("value","");
return
}if(a._itemsByIdentity[c]){a.deleteItem(a._itemsByIdentity[c]);
a.save();
d.attr("value","")
}for(var b=0;
b<5;
b++){if(cookie[e][b]&&cookie[e][b].address==c){cookie[e].splice(b,1)
}}saveCookie()
}function doSearch(c){var e=dojo.query("#textSearchField")[0],b;
if(dojo.hasClass(e,"placeholder")){return
}var g=dijit.byId("controlsCityField").attr("displayedValue"),f=Page.current.pageName=="tabNearest",j=getPosition();
channels.searchResults.channelName=channels.searchResults.channelName.substring(0,channels.searchResults.channelName.indexOf(":")+2)+e.value;
if(f){Common.addTrackedEvent("Search;"+new Date().getTime()+";"+cookie.uid+";"+e.value+";"+g+";"+-1+";"+j.latitude+";"+j.longitude+";"+j.latitude+";"+j.longitude);
dojo.byId("nearestChannel").innerHTML=channels.searchResults.channelName;
b="/resources/pois/msearch?k="+encodeURIComponent(e.value)+"&lat="+j.latitude+"&lon="+j.longitude+"&page=0&size=10&u="+cookie.uid
}else{var i=player.getViewBounds(),m=player.zoomLevel,h=i.bottomRight.latitude,a=i.topLeft.longitude,k=i.topLeft.latitude,d=i.bottomRight.longitude;
Common.addTrackedEvent("Search;"+new Date().getTime()+";"+cookie.uid+";"+e.value+";"+g+";"+m+";"+h+";"+a+";"+k+";"+d);
b="/resources/pois/search?k="+encodeURIComponent(e.value)+"&swlat="+h+"&swlon="+a+"&nelat="+k+"&nelon="+d
}if(c){var l;
while((l=xhrs.pop())!=null){l.cancel()
}while(xhrsWaiting.pop()!=null){}}xhrs.push(dojo.xhrGet({url:b,handleAs:"json",load:function(o,n){if(Common.isChildOf("srch_events",selectedChannel.channelId)){hideEventDayBrowser()
}selectedChannel=channels.searchResults;
channels.searchResults.channelName=channels.searchResults.channelName.substring(0,channels.searchResults.channelName.indexOf(":")+2)+e.value;
setSelectedResultHeaderChannel();
dojo.query(".selectedchannel").removeClass("selectedchannel ");
Page.current.update(o);
return o
},failOk:true}))
}function updateCollections(b){if(b!=defaultCity){var a="/resources/coll/l/"+encodeURIComponent(b);
if(collXhr){collXhr.cancel()
}collXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(d,c){collXhr=null;
Common.parseCollections(d,addChannel,updateChannel);
if(Page.current.pageName=="tabNearest"){dojo.query("#findaccordion .channel span.count").addClass("hidden")
}return d
},failOk:true})
}}function cityChanged(a){updateCollections(a);
Common.getWeather(a)
}function showWeatherdetails(a){if(a){clearTimeout(wt);
return
}if(!dojo.hasClass("weatherimg","hidden")){dojo.removeClass("weatherdetails","hidden");
Common.addTrackedEvent("WeatherShown;"+new Date().getTime()+";"+cookie.uid)
}}function hideWeatherdetails(a){if(dojo.hasClass("weatherdetails","frontpage")){return
}if(a){wt=setTimeout("hideWeatherdetails(false);",100);
return
}dojo.addClass("weatherdetails","hidden")
}function loginDone(a){cookie=dojo.fromJson(dojo.cookie("adforeZoomScalePosition"));
if(!a&&cookie.lang!=djConfig.locale){cookie.langChange=true;
saveCookie();
window.location.reload();
return
}RoutesPage.setupRouteFields(cookie);
storeHome(getHome());
loadBookmarks(cookie);
if(!a){closeLoginPopup();
setCookieChannel(cookie.channel);
mapMoveTo(parseFloat(cookie.latitude),parseFloat(cookie.longitude),cookie.zoomScale);
setCity(true,cookie.zoomScale,cookie.latitude,cookie.longitude);
setLogoutTexts()
}}function reverseGeocode(d,f,c,e){if(e=="Helsinki"||e=="Espoo"||e=="Kauniainen"||e=="Vantaa"||e=="Tampere"){var a="/resources/gc/rgl?lat="+d+"&lon="+f+"&u="+cookie.uid;
a+="&c="+encodeURIComponent(e);
dojo.xhrGet({url:a,target:c,handleAs:"json",load:function(h,g){parseAddress(h,g.args.target);
return h
},error:function(h,g){},failOk:true})
}else{var b=new ovi.mapsapi.search.Manager();
b.ad4target=c;
b.addObserver("state",function(i,h,j){if(j=="finished"){if(i.locations.length>0){var g=i.locations[0].address;
g.district=g.city;
parseAddress(g,b.ad4target)
}else{}}else{if(j=="failed"){}}});
b.reverseGeocode({latitude:d,longitude:f})
}}function parseAddress(a,b){var c="";
if(a.name){c=a.name;
if(a.number){c+=" "+a.number
}c+=", "
}else{if(a.street){c=a.street;
if(a.houseNumber){c+=" "+a.houseNumber
}c+=", "
}}if(a.district){c+=a.district
}dojo.byId(b).innerHTML=c
}function showMessageBody(a){if(a){clearTimeout(mt);
return
}else{clearTimeout(mt);
mt=setTimeout(hideMessageBody,2000)
}dojo.query(".moverMessage").removeClass("hidden")
}function hideMessageBody(a){clearTimeout(mt);
if(a){mt=setTimeout(hideMessageBody,100);
return
}dojo.query(".moverMessage").addClass("hidden").removeClass("moverMessage")
}function login(){if(!cookie.adforeSession){showLoginPopup("https://"+server+"/login.html")
}else{dojo.toggleClass("loginscreen","hidden")
}}function showLoginPopup(a){dojo.byId("popupFrame").src=a;
dojo.removeClass("popupFrameWrapper","hidden");
dojo.removeClass("welcomemodalpane","hidden")
}function closeLoginPopup(){dojo.addClass("popupFrameWrapper","hidden");
dojo.addClass("welcomemodalpane","hidden")
}function revokeRegistration(){window.open("https://"+server+"/revoke.html","revoke","height=550, width=550, toolbar=no, location=no, menubar=no, resizable=yes")
}function logout(){dojo.byId("loginFrame").iecrap=function(){loginDone(true)
};
dojo.byId("loginFrame").src="https://"+server+"/user/logout";
delete cookie.adforeSession;
var a=dojo.byId("label_header_login");
a.innerHTML=labels.header_login;
a.title="";
dojo.addClass("loginscreen","hidden")
}function changePassword(){dojo.addClass("loginscreen","hidden");
window.open("https://"+server+"/change.html","login","height=550, width=550, toolbar=no, location=no, menubar=no, resizable=yes")
}function unload(a){if(!cookie.adforeSession||cookie.langChange){return
}if(cookie.keepLogged){saveCookie()
}else{logout()
}if(a){window.onunload=function(){}
}}function saveCookie(a){dojo.cookie("adforeZoomScalePosition",dojo.toJson(cookie),{expires:3650,path:"/"});
if(cookie.adforeSession&&!cookie.langChange){if(a){dojo.byId("loginFrame").iecrap=a
}else{dojo.byId("loginFrame").iecrap=function(){}
}dojo.byId("loginFrame").src="https://"+server+"/user/save?ts="+new Date().getTime()
}}function setLogoutTexts(){var a=dojo.byId("label_header_login");
a.innerHTML=labels.header_logout+'<img style="margin-left: 6px;" src="down_gray.png">';
a.title=labels.logged_in+": "+cookie.name;
dojo.byId("loginname").innerHTML=cookie.name
}function closePopups(){dojo.query(".closeablePopup").addClass("hidden")
}function nokiaPlaceSearch(c,b,a){Common.nokiaPlaceSearch(null,b,a,null,nokiaPlaceCallback,0,100)
}function nokiaPlaceCallback(d,a){console.log(d);
if(d&&d.results){var e=new Object(),c,b;
Common.parseNokiaResults(d,e,false);
Page.current.update(e)
}}function createMap(d,e,c){player=new ovi.mapsapi.map.Display(dojo.byId("player"),{components:[new ovi.mapsapi.map.component.InfoBubbles(),new ovi.mapsapi.map.component.Behavior(),new ovi.mapsapi.map.component.ZoomBar(),new ovi.mapsapi.map.component.ViewControl(),new ovi.mapsapi.map.component.TypeSelector(),new ovi.mapsapi.map.component.ScaleBar()],zoomLevel:c,center:[parseFloat(d),parseFloat(e)]});
player.oldCenter=player.center;
player.oldZoom=player.zoomLevel;
player.objects.add(new ovi.mapsapi.map.Container());
var a=new ovi.mapsapi.map.Container();
RoutesPage.createRouteEndpointMarker(a,true,true,false,false);
RoutesPage.createRouteEndpointMarker(a,false,true,false,false);
player.objects.add(a);
player.objects.add(new ovi.mapsapi.map.Container());
player.objects.add(new ovi.mapsapi.map.Container());
player.addListener("dragstart",function(f){player.ad4dragging=true;
if(mapChangeTimeout){clearTimeout(mapChangeTimeout)
}});
player.addListener("dragend",function(f){player.ad4dragging=false;
if(mapChangeTimeout){clearTimeout(mapChangeTimeout)
}mapChangeTimeout=setTimeout(mapChange,100)
});
player.addListener("longpress",function(f){var g=player.pixelToGeo(f.targetX,f.targetY);
console.log(g.latitude+","+g.longitude)
});
var b;
b=dojo.query(".ovi_mp_controls");
if(b&&b.length>0&&b[0].nextSibling){b=b[0].nextSibling;
b.style.zIndex="0";
b.style.width="0px"
}if(dojo.isIE==7){b=dojo.byId("player").lastChild.style.position="absolute";
dojo.query(".ovi_mp_zoom").removeClass("ovi_hidden");
dojo.query(".ovi_mp_orientationTilt").removeClass("ovi_hidden")
}addHandlers()
}function mapChangeHandler(c,a,b){if(mapChangeTimeout){clearTimeout(mapChangeTimeout)
}if(!player.ad4dragging){mapChangeTimeout=setTimeout(mapChange,100)
}}function clickHandler(a){if(!a.target.AD4id){return
}if(a.target.AD4idA){showInfoscreen(a.target.AD4idA[0]);
displayStackResults(a.target.AD4idA);
if(Page.current.pageName=="tabRoutes"){dojo.query("#routes").addClass("hidden");
dojo.query("#resultsContainer").removeClass("hidden")
}}else{showInfoscreen(a.target.AD4id)
}}var hbt;
function mOver(a){clearTimeout(hbt);
document.body.style.cursor="pointer";
showBubble(a.target,a)
}function mBubbleOver(a){clearTimeout(hbt)
}function mOut(a){clearTimeout(hbt);
hbt=setTimeout(hideBubble,500);
document.body.style.cursor="default"
}function addHandlers(){player.addObserver("center",mapChangeHandler);
player.addObserver("zoomLevel",mapChangeHandler)
}function clearHandlers(){player.removeObserver("center",mapChangeHandler);
player.removeObserver("zoomLevel",mapChangeHandler)
}function clearHandler(){addHandlers();
player.removeObserver("center",clearHandler);
player.removeObserver("zoomLevel",clearHandler)
}function loadMap(){if(cookie.zoomScale>20){cookie.zoomScale=15
}if(!targetPOI){createMap(cookie.latitude,cookie.longitude,cookie.zoomScale)
}if(targetPOI){Common.addTrackedEvent("POILand;"+new Date().getTime()+";"+cookie.uid+";"+targetPOI);
Common.loadTargetPOI(parseSinglePOI)
}dojo.addClass("tabPlacesModalPane","hidden");
if(targetCollection&&!targetPOI){Page.current.hide();
Page.current=PlacesPage;
Page.current.show();
Page.current.load()
}}function latLngToMapTile(c,d,a){var b=latLngToPixel(c,d,a);
return{x:Math.floor(b.x/256),y:Math.floor(b.y/256)}
}function latLngToPixel(e,f,d){e=e*Math.PI/180;
var b=Math.round(128*Math.pow(2,d)+f*128*Math.pow(2,d)/180);
var a=minmax(Math.sin(e),-0.9999,0.9999);
var c=Math.round(128*Math.pow(2,d)-(128*Math.pow(2,d)/Math.PI)*0.5*Math.log((1+a)/(1-a)));
return{x:b,y:c}
}function pixelToLatLng(b,g,c,f){var e=(b-128*Math.pow(2,c))/(128*Math.pow(2,c)/180);
var a=(g-128*Math.pow(2,c))/(-128*Math.pow(2,c)/Math.PI);
var d=(2*Math.atan(Math.exp(a))-Math.PI/2)*180/Math.PI;
if(f){return new ovi.mapsapi.geo.Coordinate(d,e)
}else{return{latitude:d,longitude:e}
}}function clearMarkers(c){if(!player){return
}var b=player.objects.get(3);
if(c){b.objects.clear()
}else{var d=b.objects.asArray();
for(var a=0;
a<d.length;
a++){if(!onMap(d[a].coordinate.latitude,d[a].coordinate.longitude)){b.remove(d[a])
}}}}function countSum(a){if(a<10){return a
}if((10<=a)&&(a<20)){return 10
}if((20<=a)&&(a<50)){return 20
}if((50<=a)&&(a<100)){return 50
}if(100<=a){return 100
}return a
}function contains(c,d){for(var b=0;
b<c.length;
b++){if(c[b].AD4id==d){return c[b]
}if(c[b].AD4idA){for(var a=0;
a<c[b].AD4idA.length;
a++){if(c[b].AD4idA[a]==d){return c[b]
}}}}return false
}function onMap(e,g){e=parseFloat(e);
g=parseFloat(g);
var f=player.getViewBounds(),a=f.bottomRight.latitude,b=f.topLeft.longitude,c=f.topLeft.latitude,d=f.bottomRight.longitude;
if(g<=d&&g>=b&&e>=a&&e<=c){return true
}return false
}function bringToFront(c){if(!player){return
}var b=player.objects.get(3),a=b.objects.asArray();
if(hilightMarker&&hilightMarker.zIndex){hilightMarker.zIndex=b.zIndex
}hilightMarker=contains(a,c);
if(!hilightMarker){removeHilight();
return
}hilightMarker.zIndex=10000;
addHilight(hilightMarker.coordinate.latitude,hilightMarker.coordinate.longitude)
}function addHilight(f,g){var b=Array(),e=player.zoomLevel,a=latLngToPixel(f,g,e),d,c=player.objects.get(2);
a.x-=25;
a.y-=38;
b.push(pixelToLatLng(a.x,a.y,e,true));
b.push(pixelToLatLng(a.x+50,a.y,e,true));
b.push(pixelToLatLng(a.x+50,a.y+50,e,true));
b.push(pixelToLatLng(a.x,a.y+50,e,true));
d=new ovi.mapsapi.map.Polygon(b,{width:3,color:"#D14D4DFF",fillColor:"#FFFFFF90"});
c.objects.clear();
c.objects.add(d)
}function removeHilight(){if(!player){return
}player.objects.get(2).objects.clear()
}function routeMarkerListener(d,a,b){if(d){a=d.dataTransfer.getData("application/map-drag-object")
}var c=new ovi.mapsapi.search.Manager();
c.addObserver("state",function(g,f,h){if(h=="finished"){if(g.locations.length>0){console.log(g.locations[0]);
var e=g.locations[0].address;
e=(e.street?e.street:"")+(e.houseNumber?" "+e.houseNumber:"")+(e.city?(e.street?", "+e.city:e.city):"");
storeRouteLocation(g.dijitw.store,e,{latitude:g.locations[0].displayPosition.latitude,longitude:g.locations[0].displayPosition.longitude});
g.dijitw.setValue(e);
if(b){dijit.byId("tabContainer").selectChild("carRouteTab");
RoutesPage.getRoute(dijit.byId("routeFrom").attr("value"),dijit.byId("routeTo").attr("value"),RoutesPage.getRouteDateTime(),dijit.byId("arrive").checked)
}}else{}}else{if(h=="failed"){}}});
if(a.title=="Alku"){c.dijitw=dijit.byId("routeFrom")
}else{c.dijitw=dijit.byId("routeTo")
}c.reverseGeocode(a.coordinate)
}function isNear(e,h,b){var g=player.zoomLevel;
var a=latLngToPixel(h.latitude,h.longitude,g),d=latLngToPixel(e.latitude,e.longitude,g);
if(!b){a.y-=14
}d.y-=14;
var f=28,c=40;
if(b){c=36
}if(g>=16){f=1;
c=1
}return(Math.abs(a.x-d.x)<=f&&Math.abs(a.y-d.y)<=c)
}function showBubble(d,h){if(player.components.get(0).openBubbleHandles.getLength()>0&&!player.components.get(0).hidden&&player.components.get(0)._position.latitude==d.coordinate.latitude&&player.components.get(0)._position.longitude==d.coordinate.longitude){return
}var f="",l,c,a,j,b,e,k;
if(d.AD4idA){b=d.AD4idA.length;
f='<div class="bold halfLeftPadding ieStretcher" >'+b+" "+labels.pois+'</div><div class="infoBubbleStretcher">&nbsp;</div>';
e=d.AD4idA
}else{b=1;
e=[d.AD4id]
}if(b<=5){for(c=0;
c<b;
c++){l=Page.current.items[e[c]];
if(l.icon&&l.icon.indexOf("busstopi.png")!=-1){j="/logos/busstopi2.png"
}else{j=l.icon
}f+='<div class="halfLeftPadding clickable'+(l.stopCode&&c>0?" halfTopPadding":"")+'" onclick="showInfoscreen(\''+l.id+'\');" style="line-height: 20px; white-space: nowrap;"><img class="resultLogo" style="vertical-align: middle;" src="'+j+'" />'+l.name+"</div>";
if(l.stopCode){f+='<div id="mapBubbleTT'+c+'">&nbsp;</div>';
k=true;
if(b==5||b==4){a=1
}if(b==3){a=2
}if(b==2){a=3
}if(b==1){a=5;
k=false
}Common.loadTimetables(l.stopCode,l.datasource,"mapBubbleTT"+c,parseTimetable,a,k)
}f+='<div class="infoBubbleStretcher">&nbsp;</div>'
}}else{var g=false;
if(b>25){b=24;
g=true
}for(c=0;
c<b;
c++){l=Page.current.items[d.AD4idA[c]];
f+='<img class="inlineFloatLeft infoBubbleLogo clickable" onclick="showInfoscreen(\''+l.id+'\');" title="'+l.name+'" src="'+l.icon+'" />'
}if(g){f+='<img class="inlineFloatLeft infoBubbleLogo" src="morelogo.png" />'
}f+='<div class="infoBubbleStretcher">&nbsp;</div>'
}if(player.components.get(0).openBubbleHandles.getLength()>0){player.components.get(0).updateBubble(0,f,d.coordinate);
player.components.get(0)._bubbleNode.onmouseover=mBubbleOver;
player.components.get(0)._bubbleNode.onmouseout=mOut
}else{player.components.get(0).addBubble(f,d.coordinate);
player.components.get(0)._bubbleNode.onmouseover=mBubbleOver;
player.components.get(0)._bubbleNode.onmouseout=mOut
}}function setIconAnchorPoint(a){if(!a.AD4sum){if(a.stopCode){a.anchor={x:11,y:23}
}else{a.anchor={x:19,y:35}
}}else{if(Page.current.pageName=="tabRoutes"){a.anchor={x:12,y:39}
}else{if(a.AD4sum==2){a.anchor={x:20,y:16}
}else{a.anchor={x:20,y:23}
}}}}function hideBubble(){if(player.components.get(0).openBubbleHandles.getLength()>0){player.components.get(0).removeBubble(player.components.get(0).openBubbleHandles.get(0))
}}function mapMoveTo(a,c,b){if(player){if(b){player.setZoomLevel(b,"none")
}else{player.setZoomLevel(12,"none")
}player.setCenter(new ovi.mapsapi.geo.Coordinate(a,c))
}else{cookie.latitude=a;
cookie.longitude=c;
if(cookie.zoomScale<12){cookie.zoomScale=12
}mapChange()
}}function zoomToMapRoute(){player.zoomTo(player.objects.get(1).getBoundingBox(),false)
}function displayMarkers(n){if(!player){return
}var l=new ovi.mapsapi.map.Container(),a=new Array(),e=new Array(),h,f,d,b,g,o;
for(h=0;
h<n.length;
h++){e.push({type:"marker",latitude:parseFloat(n[h].marker.latitude),longitude:parseFloat(n[h].marker.longitude),icon:n[h].marker.icon,clickable:true,stopCode:n[h].stopCode,markerData:n[h].markerData,nearMarkers:new Array(),AD4id:n[h].id})
}do{o=e.length;
b=0;
for(h=0;
h<e.length;
h++){for(f=h+1;
f<e.length;
f++){if(isNear(e[f],e[h])){var c=true;
for(d=0;
d<e[h].nearMarkers.length;
d++){if(!isNear(e[f],e[h].nearMarkers[d])){c=false
}}if(c){e[h].nearMarkers.push(e[f]);
if(e[h].nearMarkers.length>b){b=e[h].nearMarkers.length
}}}}}while(b>0){for(h=0;
h<e.length;
h++){if(e[h].nearMarkers.length==b){for(f=0;
f<e[h].nearMarkers.length;
f++){if(contains(a,e[h].nearMarkers[f].AD4id)){e[h].nearMarkers.splice(f,1);
f--
}}}if(e[h].nearMarkers.length==b){aggregateMarker(e[h],e[h].nearMarkers,true);
a.push(e[h]);
g=e[h];
e.splice(h,1);
h--;
for(f=0;
f<g.nearMarkers.length;
f++){for(d=0;
d<e.length;
d++){if(e[d].AD4id==g.nearMarkers[f].AD4id){e.splice(d,1);
d--;
break
}}}}}b--
}}while(o!=e.length);
for(h=0;
h<e.length;
h++){var m=false;
for(f=0;
f<a.length;
f++){if(isNear(e[h],a[f],true)&&!m){aggregateMarker(a[f],[e[h]],false);
m=true
}}if(!m){a.push(e[h])
}}for(h=0;
h<a.length;
h++){addMarker(a[h],a[h].markerData,l)
}player.objects.add(l);
setTimeout("player.objects.removeAt(3)",500)
}function aggregateMarker(e,d,b){for(var a=0;
a<d.length;
a++){if(e.AD4sum){e.AD4sum++
}else{e.AD4sum=2;
e.AD4idA=new Array();
e.AD4pos=new Array();
e.AD4pos.push({latitude:e.latitude,longitude:e.longitude});
e.AD4idA.push(e.AD4id);
e.AD4id="-"+e.AD4id
}e.AD4idA.push(d[a].AD4id);
e.AD4pos.push({latitude:d[a].latitude,longitude:d[a].longitude})
}var c=e.AD4sum;
if(Page.current.pageName=="tabRoutes"){e.icon=busStack+(c<4?c:"N")+".png"
}else{c=countSum(c);
e.icon=stackMarker+c+".png"
}if(b){placeAggregate(e)
}}function placeAggregate(d){var c=0,a=0,b=0;
for(c=0;
c<d.AD4pos.length;
c++){a+=d.AD4pos[c].latitude;
b+=d.AD4pos[c].longitude
}c=d.AD4pos.length;
a=a/c;
b=b/c;
d.latitude=a;
d.longitude=b
}function addMarker(a,d,b){var c=new ovi.mapsapi.map.Marker(new ovi.mapsapi.geo.Coordinate(parseFloat(a.latitude),parseFloat(a.longitude)),{icon:a.icon,title:a.title});
c.AD4id=a.AD4id;
if(a.stopCode){c.stopCode=a.stopCode
}if(a.AD4idA){c.AD4idA=a.AD4idA;
c.AD4sum=a.AD4sum
}setIconAnchorPoint(c);
c.addListener("mouseenter",mOver);
c.addListener("mouseleave",mOut);
c.addListener("click",clickHandler);
c.icon.setOpacity=function(){return this
};
b.objects.add(c)
}function getPosition(){if(player){return player.center
}else{return{latitude:cookie.latitude,longitude:cookie.longitude}
}}function getZoomScale(){if(player){return player.zoomLevel
}else{return cookie.zoomScale
}}function Page(a,b,c){this.pageName=a;
this.items=new Object();
this.targetDiv=b;
this.includeDistance=c
}Page.prototype.show=function(){var a=dojo.byId(this.pageName);
dojo.addClass(a,"selected");
dojo.removeClass(a,"unselected");
dojo.query("."+a.id).removeClass("hidden");
dojo.addClass(a.parentNode,"selected");
this._show()
};
Page.prototype._show=function(){};
Page.prototype.hide=function(){hideInfoscreen();
closeActionCommand();
var a=dojo.byId(this.pageName);
dojo.removeClass(a,"selected");
dojo.query("."+a.id).addClass("hidden");
dojo.removeClass(a.parentNode,"selected");
var b;
while((b=xhrs.pop())!=null){b.cancel()
}while(xhrsWaiting.pop()!=null){}this._hide()
};
Page.prototype._hide=function(){};
Page.prototype.init=function(){};
Page.prototype.load=function(){updateGlobalDate();
var a;
while((a=xhrs.pop())!=null){a.cancel()
}while(xhrsWaiting.pop()!=null){}this._load(getPosition())
};
Page.prototype._load=function(a){};
Page.prototype.clear=function(b,a){if(a){this.items=new Object()
}this._clear(b,a)
};
Page.prototype._clear=function(){};
Page.prototype.update=function(b){if(b.items){for(var a=0;
a<b.items.length;
a++){if(b.items[a].i18n&&b.items[a].i18n[djConfig.locale]){var c;
for(c in b.items[a].i18n[djConfig.locale]){b.items[a][c]=b.items[a].i18n[djConfig.locale][c]
}}}}this._update(b)
};
Page.prototype._update=function(a){};
Page.prototype.render=function(o){var k="",r,m=getPosition(),n=m.latitude,a=m.longitude,q=false,c,l=this.parseAd,f=this.displayMessage;
if(this.includeDistance){var h=new Object();
h.items=o;
Common.sortData(h,n,a);
o=h.items
}if(this.targetDiv=="frontpage_list_bookmarks_results"){q=parseTimetable
}for(var g=0;
g<o.length;
g++){r=o[g];
r.bookmarked=false;
for(var e=0;
e<bookmarks.length;
e++){if(bookmarks[e].id==r.id){r.bookmarked=true;
break
}}this.items[r.id]=r;
k+=Common.displayResultItem(r,true,this.includeDistance,q,true,this.targetDiv);
Common.addTrackedEvent("POIShow;"+new Date().getTime()+";"+cookie.uid+";"+r.id+";"+(g+1)+";"+selectedChannel.length)
}if(this.targetDiv=="frontpage_list_bookmarks_results"){k='<div><img src="/logos/list_bookmarks.png" class="valign-middle resultLogo"><span class="bold resultHeaderLineHeight">'+channels.list_bookmarks.channelName+"</span></div>"+k;
if(o.length<=1){k+='<img src="'+dojo.byId("resultsHelpBookmark").src+'" class="singleTopPadding" />'
}}c=dojo.byId(this.targetDiv);
c.innerHTML=k;
c.scrollTop=0;
var b,p=new Array(),d=new Array();
for(g=0;
g<o.length;
g++){r=o[g];
if(r.hasIm){p.push(r.id)
}if(r.hasAd){if(xhrsWaiting.length<5){b="/resources/shop/"+r.id+"/ad/"+globalDate.getTime()+"?l="+djConfig.locale;
xhrsWaiting.push({url:b,itemId:r.id,container:this.targetDiv,handleAs:"json",load:function(j,i){l(j,i.args.itemId,i.args.container);
return j
},failOk:true})
}else{d.push(r.id)
}}}if(d.length>0){b="/resources/shop/ads/"+globalDate.getTime()+"?ids="+d+"&l="+djConfig.locale;
xhrsWaiting.push({url:b,container:this.targetDiv,handleAs:"json",load:function(j,i){Common.parseAds(j,i.args.container,l);
return j
},failOk:true})
}if(p.length>0){b="/resources/im/"+globalDate.getTime()+"?ids="+p;
xhrsWaiting.push({url:b,container:this.targetDiv,handleAs:"json",load:function(j,i){Common.parseIms(j,i.args.container,f);
return j
},failOk:true})
}Common.checkXhrs();
if(this.targetDiv=="results"){displayMarkers(o)
}};
Page.prototype.positionChange=function(){this.clear(false,true);
var a=getPosition();
this._positionChange(a);
setCity(false,getZoomScale(),a.latitude,a.longitude)
};
Page.prototype._positionChange=function(a){};
Page.prototype.updateBookmarks=function(){if(selectedChannel.channelId=="list_bookmarks"){displayBookmarks()
}else{updateBookmarkChannel()
}};
Page.prototype.parseAd=function(f,c,b){b=b?"#"+b+" ":"";
var i=b+"div.resultItem.id"+c;
Common.addTrackedEvent("AdShow;"+new Date().getTime()+";"+cookie.uid+";"+f.ad.id+";"+resultItemContains(dojo.query("#results div.resultItem span.iidee"),c)+";"+selectedChannel.length+";"+c);
f.ad.header=f.ad.header?f.ad.header:"";
var e=dojo.query(i),j,a;
if(e[0].previousSibling!=null&&(e[0].previousSibling.className!=null&&e[0].previousSibling.className.length>1)){j=dojo.query("span.resultAdId",e[0].previousSibling)
}if(e[0].nextSibling!=null&&e[0].nextSibling.nodeType==1){a=dojo.query("span.resultAdId",e[0].nextSibling)
}var g=dojo.query(i+" img.aImage"),h=dojo.query(i+" span.aHeader");
dojo.query(i+" span.resultAdId")[0].innerHTML=f.ad.id;
if(f.ad.header){h[0].innerHTML=f.ad.header+"<br />";
h.removeClass("hidden")
}if(f.ad.imgurl){g[0].src=f.ad.imgurl;
g[0].alt=f.ad.header;
g.removeClass("hidden");
h.addClass("hidden")
}else{g.orphan()
}if(f.ad.body){g.addClass("inlineFloatLeft");
g.addClass("aImageLmt");
h.removeClass("hidden");
var k=dojo.query(i+" span.aBody");
k[0].innerHTML=f.ad.body;
k.removeClass("hidden")
}var d=dojo.query(i+" a.resultAdLink");
if(f.ad.wwwurl){d[0].href=f.ad.wwwurl;
d[0].onclick=function(l){Common.addTrackedEvent("AdClick;"+new Date().getTime()+";"+cookie.uid+";"+f.ad.id+";"+c);
Common.flushTrackedEvents()
};
d.removeClass("hidden");
dojo.query(i+" div.resultAdContainer").addClass("hover")
}else{dojo.query(i+" div.resultNoAdLink").removeClass("hidden")[0].innerHTML=d[0].innerHTML;
d.orphan();
dojo.query(i+" div.resultAdContainer").addClass("unclickable")
}if(a!=null&&a.length>0&&f.ad.id==a[0].innerHTML){dojo.query("div.resultAdContainer",e[0].nextSibling).addClass("hidden")
}if(j==null||j.length==0||f.ad.id!=j[0].innerHTML){dojo.query(i+" div.resultAdContainer").removeClass("hidden")
}};
Page.prototype.displayMessage=function(c,e,b){console.log("displayMessage",c,e,b);
b=b?"#"+b+" ":"";
var a=b+"div.resultItem.id"+e+" div.resultMessage";
var d=b+"div.resultItem.id"+e+" div.resultMessageDetails";
Common.addTrackedEvent("ImShow;"+new Date().getTime()+";"+cookie.uid+";"+c.im.id+";"+resultItemContains(dojo.query("#results div.resultItem span.iidee"),e)+";"+selectedChannel.length+";"+e);
dojo.query(a+" span.messageHeader")[0].innerHTML=c.im.header;
dojo.query(d+" span.messageHeader")[0].innerHTML=c.im.header;
if(c.im.body){dojo.query(d+" .messageBody")[0].innerHTML=c.im.body
}dojo.query(a).removeClass("hidden")
};
var IntroPage=new Page("tabIntro","frontpage_list_bookmarks_results",true),NearestPage=new Page("tabNearest","nearestresults",true),PlacesPage=new Page("tabPlaces","results",false),LegalesePage=new Page("tabLegalese","results",false),FeedbackPage=new Page("tabFeedback","results",false);
Page.current=IntroPage;
IntroPage.lastPos=null;
IntroPage.showWelcome=function(){dojo.addClass(djConfig.locale+"WLangChange","hidden");
dijit.byId("welcomeCityField").attr("displayedValue",defaultCity);
dojo.removeClass("welcomemodalpane","hidden");
dojo.removeClass("welcomewrapper","hidden")
};
IntroPage.changeLang=function(a){cookie.welcomeLangChange=true;
changeLang(a)
};
IntroPage.hideWelcome=function(){dojo.addClass("welcomemodalpane","hidden");
dojo.addClass("welcomewrapper","hidden")
};
IntroPage.welcomeSubmit=function(){if(!dojo.hasClass("welcomeAddressField","placeholder")){dojo.removeClass("controlsAddressField","placeholder");
dojo.byId("controlsAddressField").value=dojo.byId("welcomeAddressField").value
}var b=dijit.byId("controlsCityField"),a=dijit.byId("welcomeCityField");
if(b.attr("value")==a.attr("value")){getCityLocation(true)
}else{b.attr("value",a.attr("value"))
}this.hideWelcome()
};
IntroPage.load=function(){dojo.byId("tabIntroResults").innerHTML="";
var a=getPosition();
this.items=new Object();
Common.getSpecials(a.latitude,a.longitude,true,true,"tabIntroResults",this.items,this.parseAd,this.displayMessage);
this.updateBookmarks()
};
IntroPage.init=function(a){this._hideLoading();
this._loadFrontpageAd();
if(!a){dojo.byId("tabIntroResults").innerHTML="";
var b=getPosition();
this.lastPos=b;
Common.getSpecials(b.latitude,b.longitude,true,true,"tabIntroResults",this.items,this.parseAd,this.displayMessage)
}};
IntroPage._hideLoading=function(){dojo.addClass("loadingBackground","hidden");
dojo.addClass("loading","hidden")
};
IntroPage._loadFrontpageAd=function(){dojo.xhrGet({url:"/resources/im/fpad?l="+djConfig.locale,handleAs:"text",load:function(b,a){dojo.byId("frontpageAd").innerHTML=b
},failOk:true})
};
IntroPage._hide=function(){var a=dojo.byId("weatherdetails");
dojo.removeClass(a,"frontpage");
dojo.removeClass("controls","frontpage");
dojo.removeClass("controlsNotFound","frontpage");
dojo.addClass(a,"hidden");
dojo.place(a,"wrapper")
};
IntroPage._show=function(){var a=dojo.byId("weatherdetails");
dojo.addClass(a,"frontpage");
dojo.addClass("controls","frontpage");
dojo.addClass("controlsNotFound","frontpage");
dojo.removeClass(a,"hidden");
dojo.place(a,"frontpage_left_column","first");
this.load()
};
IntroPage._positionChange=function(a){if(!this.lastPos||(this.lastPos.latitude!=a.latitude&&this.lastPos.longitude!=a.longitude)){this.lastPos=a;
this.load()
}};
IntroPage.updateBookmarks=function(){this.render(Common.cleanArray(bookmarks))
};
NearestPage.lastPos=null;
NearestPage.lastChannel=null;
NearestPage.channel=new Array();
NearestPage._positionChange=function(a){if(!this.lastPos||(this.lastPos.latitude!=a.latitude&&this.lastPos.longitude!=a.longitude)){this.lastPos=a;
this.items=new Object();
reverseGeocode(a.latitude,a.longitude,"nearestAddress",dijit.byId("controlsCityField").attr("displayedValue"));
this.load();
this.getSpecials()
}};
NearestPage._load=function(d){var a,c,b;
if(Common.isChildOf("collections",selectedChannel.channelId)){c="/logos/collections.png"
}else{c="/logos/"+selectedChannel.channelId+".png"
}dojo.byId("nearestChannel").innerHTML='<img src="'+c+'" style="vertical-align:bottom;"> '+selectedChannel.channelName;
a="&m=1&ts="+globalDate.getTime();
dojo.byId("nearestresults").innerHTML='<img src="progress.gif"><br>'+labels.results_retrieving;
if(selectedChannel.channelId=="list_bookmarks"){displayBookmarks()
}else{if(selectedChannel.channelId=="searchResults"){doSearch()
}else{if(selectedChannel.channelId=="collectionsN_kia"||Common.isChildOf("collectionsN_kia",selectedChannel.channelId)){nokiaPlaceSearch(d,null,selectedChannel.oviId)
}else{b="/resources/pois/nearest?lat="+d.latitude+"&lon="+d.longitude+"&page=0&size=10"+a;
if(selectedChannel.channelId!="find_all"){b+="&channel="+selectedChannel.channelId
}xhrs.push(dojo.xhrGet({url:b,handleAs:"json",load:function(f,e){NearestPage.update(f);
return f
},failOk:true}))
}}}};
NearestPage._update=function(b){this.channel=new Array();
for(var a=0;
a<b.items.length;
a++){this.channel.push(b.items[a])
}Page.current.clear(true,false);
Page.current.render(this.channel);
Common.flushTrackedEvents()
};
NearestPage._clear=function(b,a){dojo.byId("nearestresults").innerHTML=""
};
NearestPage._hide=function(){dojo.removeClass("channels","nearest");
dojo.removeClass("controls","nearest");
this.lastChannel=selectedChannel.channelId
};
NearestPage._show=function(){dojo.addClass("channels","nearest");
dojo.addClass("controls","nearest");
if(dojo.hasClass("player","wideMap")){restoreMapPlayer()
}else{dijit.byId("findaccordion").resize()
}var a=getPosition();
if(this.lastPos==null||a.latitude!=this.lastPos.latitude||a.longitude!=this.lastPos.longitude){this._positionChange(a)
}else{if(this.lastChannel!=selectedChannel.channelId){this.load()
}}dojo.query("#findaccordion .channel span.count").addClass("hidden")
};
NearestPage.getSpecials=function(){dojo.byId("tabNearestResults").innerHTML="";
var a=getPosition();
Common.getSpecials(a.latitude,a.longitude,true,true,"tabNearestResults",this.items,this.parseAd,this.displayMessage)
};
PlacesPage.lastPos=null;
PlacesPage._show=function(){dojo.addClass("weatherdetails","places");
if(dojo.hasClass("player","wideMap")){restoreMapPlayer()
}else{dijit.byId("findaccordion").resize()
}dojo.query("#findaccordion .channel span.count").removeClass("hidden");
var a=getPosition();
if(this.lastPos==null||a.latitude!=this.lastPos.latitude||a.longitude!=this.lastPos.longitude){this._positionChange(a)
}else{this.render(selectedChannel)
}};
PlacesPage._hide=function(){dojo.removeClass("weatherdetails","places");
clearMarkers(true)
};
PlacesPage._positionChange=function(a){this.lastPos=a;
this.load()
};
PlacesPage._clear=function(d,a){if(a){Common.clearChannelsBase();
Common.clearArrays()
}if(d){dojo.byId("results").innerHTML='<div style="display:none;"><span class="hidden iidee">-1</span><span class="hidden lat">100</span><span class="hidden lon">400</span></div>';
if(selectedChannel.channelId!="list_bookmarks"){this.items=new Object()
}}else{var b=dojo.query("#results div.resultItem");
for(var c=0;
c<b.length;
c++){if(!onMap(dojo.query("span.lat",b[c])[0].innerHTML,dojo.query("span.lon",b[c])[0].innerHTML)){b.at(c).orphan()
}}}clearMarkers(d);
if(a){dojo.query("#channels p.channel span.count").forEach(function(e){e.innerHTML="(...)";
updateChannelTextLength(e)
})
}};
PlacesPage._load=function(g){var e=player.getViewBounds(),f=e.bottomRight.latitude,a=e.topLeft.longitude,h=e.topLeft.latitude,d=e.bottomRight.longitude,i=player.zoomLevel,c,b;
updateResultsHeader("","results_retrieving");
b="&ts="+globalDate.getTime()+"&m="+Common.getEventLoadingMode();
if(Common.getEventLoadingMode()==2){b="&ts="+new Date().getTime()+"&m="+Common.getEventLoadingMode()
}else{if(Common.getEventLoadingMode()==3){b="&ts="+getEventFrom()+"&tst="+getEventTo()+"&m="+Common.getEventLoadingMode()
}}c="/resources/pois/channels/counts?swlat="+f+"&swlon="+a+"&nelat="+h+"&nelon="+d+"&z="+i+b;
xhrs.push(dojo.xhrGet({url:c,handleAs:"json",load:function(k,j){parseChannelCounts(k);
return k
},failOk:true}));
if(selectedChannel.channelId=="list_bookmarks"){displayBookmarks()
}else{if(selectedChannel.channelId=="searchResults"){doSearch()
}else{if(selectedChannel.channelId=="collectionsN_kia"||Common.isChildOf("collectionsN_kia",selectedChannel.channelId)){nokiaPlaceSearch(g,player.getViewBounds(),selectedChannel.oviId)
}else{c="/resources/pois?swlat="+f+"&swlon="+a+"&nelat="+h+"&nelon="+d+"&z="+i+b;
if(selectedChannel.channelId!="find_all"){c+="&channel="+selectedChannel.channelId
}xhrs.push(dojo.xhrGet({url:c,handleAs:"json",load:function(k,j){PlacesPage.update(k);
return k
},failOk:true}))
}}}fetchLatestMessage(g.latitude,g.longitude,dijit.byId("controlsCityField").attr("displayedValue"))
};
PlacesPage._update=function(d){if(d.count==-1){updateResultsHeader("","results_too_many");
Page.current.clear(true,false);
return
}else{if(d.count==-2){updateResultsHeader("","results_too_wide");
Page.current.clear(true,true);
return
}}d.items.sort(sortItems);
var c;
if(selectedChannel.channelId=="find_all"){for(c in channels){while(channels[c].pop()){}channels[c].isLoaded=true
}}else{while(channels.find_all.pop()){}for(c in channels){if(Common.isChildOf(selectedChannel.channelId,c)&&c.indexOf("collectionsN_kia")==-1){while(channels[c].pop()){}channels[c].isLoaded=true
}}}if(selectedChannel.channelId.indexOf("collectionsN_kia")!=-1){while(selectedChannel.pop()){}}for(var b=0;
b<d.items.length;
b++){if(selectedChannel.channelId!="find_all"||!d.items[b].hasSuper){channels.find_all.push(d.items[b])
}if(selectedChannel.channelId=="searchResults"){channels.searchResults.push(d.items[b])
}else{if(selectedChannel.channelId=="collectionsN_kia"||Common.isChildOf("collectionsN_kia",selectedChannel.channelId)){selectedChannel.push(d.items[b]);
selectedChannel.isLoaded=true
}else{for(var a=0;
a<d.items[b].channels.length;
a++){if(Common.isChildOf(selectedChannel.channelId,d.items[b].channels[a])){if(!channels[d.items[b].channels[a]]){channels[d.items[b].channels[a]]=new Array()
}Common.pushItem(channels[d.items[b].channels[a]],d.items[b])
}}}}}for(c in channels){if(channels[c].length>100){while(channels[c].pop()){}channels[c].isLoaded=false
}}Page.current.clear(false,false);
dojo.byId("results").innerHTML='<div style="display:none;"><span class="hidden iidee">-1</span><span class="hidden lat">100</span><span class="hidden lon">400</span></div>';
if(selectedChannel.channelId!="list_bookmarks"){this.items=new Object()
}updateResultsHeader(selectedChannel.length,"results_on_map_area");
Page.current.render(selectedChannel);
Common.flushTrackedEvents()
};
LegalesePage.clear=function(){};
LegalesePage.load=function(){};
LegalesePage.positionChange=function(){};
LegalesePage.render=function(){};
LegalesePage.updateBookmarks=function(){};
LegalesePage.showParagraph=function(c,b){if(Page.current.pageName!="tabLegalese"){displayTab(LegalesePage)
}if("termsofuse"==b){var a=dojo.byId("revoke");
if(cookie.adforeSession){if(dojo.hasClass(a,"placed")){dojo.removeClass(a,"hidden")
}else{if(dojo.byId(b+"_"+djConfig.locale)){dojo.place(a,"termsofuse_"+djConfig.locale,"last")
}else{dojo.place(a,"termsofuse","last")
}dojo.addClass(a,"placed");
dojo.removeClass(a,"hidden")
}}else{dojo.addClass(a,"hidden")
}}dojo.query("#legalesecontent .selectedparagraph").removeClass("selectedparagraph");
dojo.addClass(c,"selectedparagraph");
dojo.query("#legalesecontent .selected").removeClass("selected").addClass("hidden");
if(dojo.byId(b+"_"+djConfig.locale)){dojo.query("#legalesecontent #"+b+"_"+djConfig.locale).removeClass("hidden").addClass("selected")
}else{dojo.query("#legalesecontent #"+b).removeClass("hidden").addClass("selected")
}};
FeedbackPage.clear=function(){};
FeedbackPage.load=function(){};
FeedbackPage.positionChange=function(){};
FeedbackPage.render=function(){};
FeedbackPage.updateBookmarks=function(){};
FeedbackPage.resetFeedbackResponse=function(){dojo.addClass("feedbackResponse","invisible")
};
FeedbackPage.sendFeedback=function(){var a="/feedback/form";
dojo.xhrPost({url:a,postData:encodeURIComponent(dojo.query("#feedbackInputBox")[0].value),handleAs:"text",load:function(b){dojo.removeClass("feedbackResponse","invisible");
dojo.query("#feedbackInputBox")[0].value="";
setTimeout("FeedbackPage.resetFeedbackResponse();",60000)
},failOk:true})
};
var RoutesPage=new Page("tabRoutes","results",false);
RoutesPage.stops=new Array();
RoutesPage.routeStops=new Array();
RoutesPage.routeXhr=null;
RoutesPage.routes={carRouteTab:new Array(),walkRouteTab:new Array(),busRouteTab:new Array()};
RoutesPage.prevSearch={from:null,to:null,fromVal:null,toVal:null};
RoutesPage.selectedTab="carRouteTab";
RoutesPage.selectedRoute=0;
RoutesPage.publicRouting=false;
RoutesPage.lastPos=null;
RoutesPage.singlePOIStyles=null;
RoutesPage.routeFromStore=new dojo.data.ItemFileWriteStore({data:{identifier:"name",items:[]}});
RoutesPage.routeToStore=new dojo.data.ItemFileWriteStore({data:{identifier:"name",items:[]}});
RoutesPage.init=function(){this.setupRouteFields(cookie)
};
RoutesPage._positionChange=function(a){this.lastPos=a;
this.load()
};
RoutesPage.clear=function(b,a){if(b){this.removeRoute()
}this.items=new Object();
if(this.singlePOIStyles){this.items[this.singlePOIStyles.id]=this.singlePOIStyles
}this.stops=new Array();
clearMarkers(true)
};
RoutesPage._load=function(h){if(this.publicRouting){RoutesPage.setRouteStops();
if(dijit.byId("showBusStops").attr("checked")){var g=player.getViewBounds(),a=g.bottomRight.latitude,b=g.topLeft.longitude,c=g.topLeft.latitude,e=g.bottomRight.longitude,f=player.zoomLevel,d="/resources/pois/stops?swlat="+a+"&swlon="+b+"&nelat="+c+"&nelon="+e+"&z="+f;
xhrs.push(dojo.xhrGet({url:d,handleAs:"json",load:function(j,i){RoutesPage.parseStops(j);
return j
},failOk:true}))
}}if(!this.singlePOIStyles){fetchLatestMessage(h.latitude,h.longitude,dijit.byId("controlsCityField").attr("displayedValue"))
}};
RoutesPage._hide=function(){dojo.byId("resultsRoutes").innerHTML='<div class="hidden"></div>';
dojo.byId("results").innerHTML="";
dojo.query("#player").removeClass("fullHeight");
dijit.byId("route_public_transportation").startup();
if(this.singlePOIStyles){this.removeSinglePOIStyles()
}var a=player.objects.get(1),c=a.objects.get(0),b=a.objects.get(1);
c.set("visibility",false);
b.set("visibility",false);
this.removeRoute();
clearMarkers(true);
this.lastPos=getPosition()
};
RoutesPage._show=function(){dojo.query("#player").addClass("fullHeight");
if(dojo.hasClass("player","wideMap")){restoreMapPlayer()
}var b=dojo.byId("routeTime");
if(b.value===""){b.value=Common.currentTime()
}if(RoutesPage.getRouteDateTime()<(new Date().getTime())){RoutesPage.updateRouteDate()
}this.showRouteEndpoints(null,null,true);
if(RoutesPage.routes[RoutesPage.selectedTab]&&RoutesPage.routes[RoutesPage.selectedTab].length>0){if(RoutesPage.selectedRoute!=-1){RoutesPage.drawRoute(RoutesPage.routes[RoutesPage.selectedTab][RoutesPage.selectedRoute],true)
}for(var a=0;
a<RoutesPage.routes[RoutesPage.selectedTab].length;
a++){RoutesPage.displayRoute(RoutesPage.routes[RoutesPage.selectedTab][a],a)
}dijit.byId("routetypeaccordion").resize()
}var c=getPosition();
if(this.lastPos==null||c.latitude!=this.lastPos.latitude||c.longitude!=this.lastPos.longitude){this._positionChange(c)
}else{if(this.publicRouting&&dijit.byId("showBusStops").attr("checked")){RoutesPage.render(RoutesPage.stops)
}}};
RoutesPage.setupRouteFields=function(b){var a;
for(a=0;
a<this.routeFromStore._arrayOfAllItems.length;
a++){if(this.routeFromStore._arrayOfAllItems[a]){this.routeFromStore.deleteItem(this.routeFromStore._arrayOfAllItems[a])
}}this.routeFromStore.save();
for(a=0;
a<this.routeToStore._arrayOfAllItems.length;
a++){if(this.routeToStore._arrayOfAllItems[a]){this.routeToStore.deleteItem(this.routeToStore._arrayOfAllItems[a])
}}this.routeToStore.save();
if(!b){return
}for(a=0;
a<5;
a++){if(b["rfrom"+a]){delete b["rfrom"+a]
}if(b["rto"+a]){delete b["rto"+a]
}}if(b.fromLocations){for(a=0;
a<b.fromLocations.length;
a++){storeRouteLocation(this.routeFromStore,b.fromLocations[a].address,{latitude:b.fromLocations[a].latitude,longitude:b.fromLocations[a].longitude})
}}if(b.toLocations){for(a=0;
a<b.toLocations.length;
a++){storeRouteLocation(this.routeToStore,b.toLocations[a].address,{latitude:b.toLocations[a].latitude,longitude:b.toLocations[a].longitude})
}}};
RoutesPage.parseStops=function(b){if(b.count==-1){RoutesPage.clear(false,true);
RoutesPage.setRouteStops();
return
}else{if(b.count==-2){RoutesPage.clear(false,true);
RoutesPage.setRouteStops();
return
}}RoutesPage.clear(false,true);
for(var a=0;
a<b.items.length;
a++){RoutesPage.stops.push(b.items[a])
}RoutesPage.setRouteStops();
RoutesPage.render(RoutesPage.stops)
};
RoutesPage.setRouteStops=function(){for(var a=0;
a<RoutesPage.routeStops.length;
a++){RoutesPage.items[RoutesPage.routeStops[a].id]=RoutesPage.routeStops[a]
}};
RoutesPage.getRoute=function(g,h,d,f,i){var e,b;
if(i){e=g;
b=h
}else{if(g.latitude){e=g
}else{if(g==labels.home){e={latitude:cookie.home.latitude,longitude:cookie.home.longitude}
}else{if(RoutesPage.routeFromStore._itemsByIdentity[g]&&RoutesPage.routeFromStore._itemsByIdentity[g].value){e=RoutesPage.routeFromStore._itemsByIdentity[g].value[0]
}}}if(h.latitude){b=h
}else{if(h==labels.home){b={latitude:cookie.home.latitude,longitude:cookie.home.longitude}
}else{if(RoutesPage.routeToStore._itemsByIdentity[h]&&RoutesPage.routeToStore._itemsByIdentity[h].value){b=RoutesPage.routeToStore._itemsByIdentity[h].value[0]
}}}if(RoutesPage.prevSearch.from!=g||RoutesPage.prevSearch.to!=h||(RoutesPage.prevSearch.fromVal&&RoutesPage.prevSearch.fromVal.latitude&&!e)||(RoutesPage.prevSearch.fromVal&&RoutesPage.prevSearch.fromVal.latitude&&e&&e.latitude&&(e.latitude!=RoutesPage.prevSearch.fromVal.latitude||e.longitude!=RoutesPage.prevSearch.fromVal.longitude))||(RoutesPage.prevSearch.toVal&&RoutesPage.prevSearch.toVal.latitude&&!b)||(RoutesPage.prevSearch.toVal&&RoutesPage.prevSearch.toVal.latitude&&b&&b.latitude&&(b.latitude!=RoutesPage.prevSearch.toVal.latitude||b.longitude!=RoutesPage.prevSearch.toVal.longitude))){for(var c in RoutesPage.routes){RoutesPage.routes[c]=null
}}RoutesPage.prevSearch={from:g,fromVal:e,to:h,toVal:b};
if(!e){e=g
}if(!b){b=h
}RoutesPage.resetRoute();
dojo.byId("resultsRoutes").innerHTML="<img src='progress.gif' /><br />"+labels.searching_route+"...";
if(!g.latitude){RoutesPage.updateRouteHeader(g,h)
}if((!e.latitude||!b.latitude)&&(!RoutesPage.publicRouting||Common.getRouteServiceBySelection()==OULU)){RoutesPage.geoCodeAndRoute(e,b,d,f);
return
}}if(!RoutesPage.publicRouting){Common.getNokiaRoute(RoutesPage.onRouteCalculated,e,b,dijit.byId("walkRouteTab").selected);
return
}var a="/resources/route/ytv?date="+d+"&u="+cookie.uid+"&c="+Common.getRouteServiceBySelection()+"&l="+djConfig.locale;
if(e.latitude&&e.longitude){a+="&fromLat="+e.latitude+"&fromLon="+e.longitude
}else{a+="&from="+encodeURIComponent(e)
}if(b.latitude&&b.longitude){a+="&toLat="+b.latitude+"&toLon="+b.longitude
}else{a+="&to="+encodeURIComponent(b)
}if(f){a+="&arr=1";
window.arrMode=true
}else{window.arrMode=false
}if(RoutesPage.routeXhr){if(RoutesPage.routeXhr.ioArgs&&RoutesPage.routeXhr.ioArgs.url==a&&(RoutesPage.routeXhr.fired||RoutesPage.routeXhr.isFiring)){return
}else{RoutesPage.routeXhr.cancel()
}}RoutesPage.routeXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(k,j){RoutesPage.parseRoute(k,g,h);
return k
},failOk:true});
RoutesPage.loadOtherExceptions()
};
RoutesPage.parseRoute=function(c,h,g){if(c.error){dojo.byId("resultsRoutes").innerHTML=labels.route_error;
return
}if(c.routes){var b=c.routes.length;
if(b>0){var f,a;
if(c.geoLocsFrom){f=c.geoLocsFrom[0].name+(c.geoLocsFrom[0].number?" "+c.geoLocsFrom[0].number:"")
}if(!h.latitude){storeRouteLocation(RoutesPage.routeFromStore,h,c.routes[0].start.location);
addRouteLocationToCookie(h,c.routes[0].start.location,true)
}if(c.geoLocsTo){a=c.geoLocsTo[0].name+(c.geoLocsTo[0].number?" "+c.geoLocsTo[0].number:"")
}if(!g.latitude){storeRouteLocation(RoutesPage.routeToStore,g,c.routes[0].end.location);
addRouteLocationToCookie(g,c.routes[0].end.location,false)
}saveCookie();
if(f||a){RoutesPage.updateRouteHeader(f,a)
}if(dijit.byId("arrive").checked!=window.arrMode){RoutesPage.routes[RoutesPage.selectedTab]=c.routes.reverse()
}else{RoutesPage.routes[RoutesPage.selectedTab]=c.routes
}RoutesPage.selectedRoute=0;
RoutesPage.drawRoute(c.routes[0]);
dojo.byId("resultsRoutes").innerHTML="";
for(var d=0;
d<b;
d++){RoutesPage.displayRoute(c.routes[d],d)
}dijit.byId("routetypeaccordion").resize()
}}else{var e="";
if(c.from){e+='<span class="error">'+labels.route_from_not_found+"</span><br />"
}if(c.to){e+='<span class="error">'+labels.route_to_not_found+"</span>"
}if(e.length>0){dojo.byId("resultsRoutes").innerHTML=e
}else{dojo.byId("resultsRoutes").innerHTML=""
}}};
RoutesPage.drawRoute=function(k,a){var g,f,e,b,c;
this.routeStops=new Array();
g=player.objects.get(0);
g.objects.clear();
if(k.waypoints){b=k.waypoints[0].originalPosition;
c=k.waypoints[k.waypoints.length-1].originalPosition
}else{b=new ovi.mapsapi.geo.Coordinate(parseFloat(k.start.location.latitude),parseFloat(k.start.location.longitude));
c=new ovi.mapsapi.geo.Coordinate(parseFloat(k.end.location.latitude),parseFloat(k.end.location.longitude))
}this.showRouteEndpoints(b,c);
if(k.waypoints){g.objects.add(new ovi.mapsapi.map.Polyline(k.shape,{width:7,color:"#0000FF57"}))
}else{for(e=0;
e<k.route.length;
e++){f=new Array();
for(var d=0;
d<k.route[e].points.length;
d++){f.push(new ovi.mapsapi.geo.Coordinate(parseFloat(k.route[e].points[d].location.latitude),parseFloat(k.route[e].points[d].location.longitude)));
if(k.route[e].points[d].code){var h={id:"rp"+e+d,stopCode:k.route[e].points[d].code,icon:"/logos/busstopi.png",name:k.route[e].points[d].name+"("+k.route[e].points[d].code+")",datasource:k.source,marker:{AD4id:"rp"+e+d,latitude:parseFloat(k.route[e].points[d].location.latitude),longitude:parseFloat(k.route[e].points[d].location.longitude),icon:"/logos/busstop.png",stopCode:k.route[e].points[d].code},markerData:'<div><img class="inlineFloatLeft resultLogo clickable" src="/logos/busstopi.png" />'+k.route[e].points[d].name+"("+k.route[e].points[d].code+")<br />"};
this.items[h.id]=h;
this.routeStops.push(h)
}}g.objects.add(new ovi.mapsapi.map.Polyline(f,{width:7,color:k.route[e].ttcol+"57"}))
}for(e=0;
e<this.routeStops.length;
e++){addMarker(this.routeStops[e].marker,this.routeStops[e].markerData,g)
}RoutesPage.setRouteStops()
}if(!a){zoomToMapRoute()
}};
RoutesPage.displayRoute=function(k,b){var m=dojo.byId("resultsRoutes"),d,f,e,c="resultRoute",l='<tr class="'+(b==this.selectedRoute?"hidden":"")+'">',o='<tr class="'+(b==this.selectedRoute?"hidden":"")+'">',h,g;
if(b==this.selectedRoute){c+=" selectedResultRoute"
}h='<table class="'+c+'" onclick="RoutesPage.expandRoute(this,'+b+');">';
h+='<tr class="resultRouteMiniHeader clickable '+(b==this.selectedRoute?"hidden":"")+'">';
if(k.waypoints){d=Math.ceil(k.duration/60);
if(d>=60){d=(Math.floor(d/60))+" h "+(d%60)
}g='<td colspan="3">'+(k.mode.type=="shortest"?labels.route_shortest:(k.mode.type=="economic"?labels.route_economic:labels.route_fastest))+'<br><span class="smallprint bold">'+Math.round(k.totalLength/100)/10+" km</span></td>"
}else{d=Math.ceil(parseInt(k.duration)/60000);
g='<td colspan="2">'+k.start.arrival+"-"+k.end.departure+"</td>"
}h+=g;
if(!k.waypoints){h+='<td colspan="2"><table class="resultRouteMiniTable">';
for(f=0;
f<k.route.length;
f++){if(f==5&&k.route.length>6){h+=l+"</tr>"+o+"</tr>";
l='<tr class="'+(b==this.selectedRoute?"hidden":"")+'">';
o='<tr class="'+(b==this.selectedRoute?"hidden":"")+'">'
}l+='<td><img src="/resources/image/'+k.route[f].ttpic+'"/></td>';
o+="<td>"+(k.route[f].line?k.route[f].line:"&nbsp;")+"</td>"
}h+=l+"</tr>"+o+"</tr>";
h+="</table></td>"
}if(k.waypoints){h+='<td colspan="2" class="routeDuration">'+d+" "+labels.routes_minutes_short+" </td></tr>"
}else{h+='<td class="routeDuration">'+d+" "+labels.routes_minutes_short+" </td></tr>"
}h+='<tr class="resultRouteHeader clickable bold '+(b==this.selectedRoute?"":"hidden")+'">'+g;
if(!k.waypoints){h+='<td colspan="1">&nbsp;</td>'
}h+='<td colspan="2" class="routeDuration">'+d+" "+labels.routes_minutes_short+" </td></tr>";
if(k.waypoints){for(f=0;
f<k.legs.length;
f++){for(e=0;
e<k.legs[f].maneuvers.length;
e++){var a=k.legs[f].maneuvers[e];
h+='<tr class="routeLeg '+(b==this.selectedRoute?"":"hidden")+'">';
h+='<td class="routeLeg clickable smallprint" onclick="mapMoveTo('+a.position.latitude+", "+a.position.longitude+', 17);Common.stopEvent(event);">';
h+=(a.distanceFromPreviousManeuver<1000?a.distanceFromPreviousManeuver+" m":Math.round(a.distanceFromPreviousManeuver/100)/10+" km")+"</td>";
h+='<td class="routeLeg" colspan="4">'+Common.getRoutingActionText(a.action,a.turn)+'<span class="bold"> '+a.nextStreetName+"</span></td>";
h+="</tr>"
}}}else{for(f=0;
f<k.route.length;
f++){h+='<tr class="routeLeg '+(b==this.selectedRoute?"":"hidden")+'"><td class="routeIcon routeLeg">';
h+='<img class="clickable" src="/resources/image/'+k.route[f].ttpic+'" onclick="mapMoveTo('+k.route[f].points[0].location.latitude+", "+k.route[f].points[0].location.longitude+', 17);Common.stopEvent(event);"/></td>';
h+='<td class="routeLegLine routeLeg" >'+(k.route[f].line?k.route[f].line:"&nbsp;")+"</td>";
e=k.route[f].points.length-1;
if(k.route[f].tt!="WALK"){h+='<td class="routeLeg" colspan="3">'+k.route[f].points[0].departure+" "+(k.route[f].points[0].name?k.route[f].points[0].name:"&nbsp;")+"<br />";
h+=k.route[f].points[e].arrival+" "+(k.route[f].points[e].name?k.route[f].points[e].name:"&nbsp;")+"</td>"
}else{if(f==0){h+='<td class="routeLeg" colspan="3">'+k.route[f].points[0].departure+" "+dojo.byId("route_public_transportation_from").innerHTML+"<br />"
}else{h+='<td class="routeLeg" colspan="3">'
}h+='<span class="smallprint">'+k.route[f].length+" m "+labels.walking+"</span>";
if(f!=0&&f!=k.route.length-1){h+='<br /><span class="smallprint">'+Common.timediff(k.route[f].points[e].arrival,k.route[f].points[e].departure)+" "+labels.routes_minutes_short+" "+labels.waiting+"</span></td>"
}if(f==0){h+="</td>"
}if(f==k.route.length-1){h+="<br />"+k.route[f].points[e].arrival+" "+dojo.byId("route_public_transportation_to").innerHTML+"</td>"
}}h+="</tr>";
if(k.route[f].ex){h+='<tr class="routeExceptionInfo"><td colspan="5"><span class="bold">'+labels.exception_info+"</span>: "+k.route[f].ex+"</td></tr>"
}}}m.innerHTML+=h+"</table>";
dijit.byId("route_public_transportation").startup()
};
RoutesPage.expandRoute=function(a,b){dojo.query("#resultsRoutes .selectedResultRoute tr").toggleClass("hidden");
dojo.query("#resultsRoutes .selectedResultRoute").removeClass("selectedResultRoute");
if(b==this.selectedRoute){this.selectedRoute=-1;
this.removeRoute()
}else{this.selectedRoute=b;
this.drawRoute(this.routes[this.selectedTab][b]);
a.className+=" selectedResultRoute";
dojo.query("#resultsRoutes .selectedResultRoute tr").toggleClass("hidden")
}dojo.query("#resultsRoutes tr.routeExceptionInfo").removeClass("hidden")
};
RoutesPage.clearRoute=function(){RoutesPage.routes[RoutesPage.selectedTab]=null;
dojo.byId("resultsRoutes").innerHTML="";
dojo.query("#route_public_transportation .resultsRouteBody").addClass("hidden");
dojo.query("#route_public_transportation .resultsRouteHeader").addClass("hidden");
dijit.byId("route_public_transportation").startup()
};
RoutesPage.updateRouteHeader=function(b,a){dojo.byId("resultsRouteDate").innerHTML=dojo.byId("routeDate").value;
dojo.byId("resultsRouteTime").innerHTML=(dijit.byId("departure").checked?labels.route_departure_time:labels.route_arrive_time)+" "+labels.route_clock.toLowerCase()+" "+dojo.byId("routeTime").value;
if(b){dojo.byId("route_public_transportation_from").innerHTML=b
}if(a){dojo.byId("route_public_transportation_to").innerHTML=a
}dojo.query("#route_public_transportation .resultsRouteBody").removeClass("hidden");
dojo.query("#route_public_transportation .resultsRouteHeader").removeClass("hidden")
};
RoutesPage.resetRoute=function(){this.clearRoute();
this.removeRoute()
};
RoutesPage.removeRoute=function(){this.routeStops=new Array();
try{player.objects.get(0).objects.clear()
}catch(a){}};
RoutesPage.updateRouteDate=function(){dojo.byId("routeTime").value=Common.currentTime();
dijit.byId("routeDate").attr("value",new Date())
};
RoutesPage.getRouteDateTime=function(){var b=dijit.byId("routeDate").value;
var f=dojo.byId("routeTime").value;
var d=f.indexOf(":");
if(d<0){var a=0;
var c=0;
if(isFinite(f)&&(f>-1)){f=Common.parseRouteTime(f);
a=f.substring(0,2);
c=f.substring(2,4)
}else{var e=new Date();
a=e.getHours();
c=e.getMinutes();
if(c<10){c="0"+c
}}dojo.query("#routeTime")[0].value=a+":"+c;
b.setHours(a,c,0,0)
}else{b.setHours(f.substr(0,d),f.substr(d+1),0,0)
}return b.getTime()
};
RoutesPage.onRouteCalculated=function(a,b,c){if(c=="failed"){dojo.byId("resultsRoutes").innerHTML=labels.route_error;
return
}if(c=="finished"){if(!RoutesPage.routes[RoutesPage.selectedTab]||RoutesPage.routes[RoutesPage.selectedTab].length==0){RoutesPage.routes[RoutesPage.selectedTab]=a.getRoutes();
RoutesPage.selectedRoute=0;
RoutesPage.drawRoute(RoutesPage.routes[RoutesPage.selectedTab][0]);
dojo.byId("resultsRoutes").innerHTML="";
RoutesPage.displayRoute(RoutesPage.routes[RoutesPage.selectedTab][0],0);
if(dijit.byId("carRouteTab").selected){Common.getNokiaRoute(RoutesPage.onRouteCalculated,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[0].originalPosition,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[RoutesPage.routes[RoutesPage.selectedTab][0].waypoints.length-1].originalPosition,dijit.byId("walkRouteTab").selected,"shortest")
}var e=dojo.byId("route_public_transportation_from").innerHTML,d=dojo.byId("route_public_transportation_to").innerHTML;
storeRouteLocation(RoutesPage.routeFromStore,e,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[0].originalPosition);
addRouteLocationToCookie(e,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[0].originalPosition,true);
storeRouteLocation(RoutesPage.routeToStore,d,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[RoutesPage.routes[RoutesPage.selectedTab][0].waypoints.length-1].originalPosition);
addRouteLocationToCookie(d,RoutesPage.routes[RoutesPage.selectedTab][0].waypoints[RoutesPage.routes[RoutesPage.selectedTab][0].waypoints.length-1].originalPosition,false);
saveCookie()
}else{if(RoutesPage.routes[RoutesPage.selectedTab].length==1){RoutesPage.routes[RoutesPage.selectedTab].push(a.getRoutes()[0]);
RoutesPage.displayRoute(RoutesPage.routes[RoutesPage.selectedTab][1],1)
}}dijit.byId("routetypeaccordion").resize()
}};
RoutesPage.geoCodeAndRoute=function(f,e,d,a){try{var b=new ovi.mapsapi.search.Manager();
b.addObserver("state",function(h,g,i){if(i=="finished"){if(h.locations.length>0){if(!f.latitude){f=new Object();
f.latitude=h.locations[0].navigationPosition.latitude;
f.longitude=h.locations[0].navigationPosition.longitude;
if(!e.latitude){b=new ovi.mapsapi.search.Manager();
b.addObserver("state",function(k,j,l){if(l=="finished"){if(k.locations.length>0){e=new Object();
e.latitude=k.locations[0].navigationPosition.latitude;
e.longitude=k.locations[0].navigationPosition.longitude;
RoutesPage.getRoute(f,e,d,a,true)
}else{dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_to_not_found+"</span>"
}}else{if(l=="failed"){dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_to_not_found+"</span>"
}}});
b.geocode(e)
}else{RoutesPage.getRoute(f,e,d,a,true)
}}else{e=new Object();
e.latitude=h.locations[0].navigationPosition.latitude;
e.longitude=h.locations[0].navigationPosition.longitude;
RoutesPage.getRoute(f,e,d,a,true)
}}else{if(!f.latitude){dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_from_not_found+"</span>"
}else{dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_to_not_found+"</span>"
}}}else{if(i=="failed"){if(!f.latitude){dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_from_not_found+"</span>"
}else{dojo.byId("resultsRoutes").innerHTML='<span class="error">'+labels.route_to_not_found+"</span>"
}}}});
if(!f.latitude){b.geocode(f)
}else{b.geocode(e)
}}catch(c){console.log("error",c)
}};
RoutesPage.routingTabChange=function(b,c){if(!b){dojo.query(".notOviControls").addClass("hidden");
dojo.addClass("otherRouteExceptions","hidden")
}else{dojo.query(".notOviControls").removeClass("hidden")
}dojo.byId("label_route_public_transportation").innerHTML=dojo.byId("label_"+c.id).innerHTML;
this.publicRouting=b;
this.removeRoute();
dojo.byId("resultsRoutes").innerHTML="";
if(b){var d=getPosition();
if(this.lastPos==null||this.stops.length==0||d.latitude!=this.lastPos.latitude||d.longitude!=this.lastPos.longitude){this._positionChange(d)
}else{if(this.publicRouting&&dijit.byId("showBusStops").attr("checked")){this.render(this.stops)
}}RoutesPage.loadOtherExceptions()
}else{clearMarkers(true)
}if(RoutesPage.getRouteDateTime()<(new Date().getTime())){RoutesPage.updateRouteDate()
}RoutesPage.selectedTab=c.id;
RoutesPage.selectedRoute=0;
if(RoutesPage.routes[RoutesPage.selectedTab]&&RoutesPage.routes[RoutesPage.selectedTab].length>0){RoutesPage.drawRoute(RoutesPage.routes[RoutesPage.selectedTab][RoutesPage.selectedRoute],true);
for(var a=0;
a<RoutesPage.routes[RoutesPage.selectedTab].length;
a++){RoutesPage.displayRoute(RoutesPage.routes[RoutesPage.selectedTab][a],a)
}dijit.byId("routetypeaccordion").resize()
}else{if(RoutesPage.prevSearch.from&&RoutesPage.prevSearch.to){RoutesPage.getRoute(RoutesPage.prevSearch.from,RoutesPage.prevSearch.to,RoutesPage.getRouteDateTime())
}}};
RoutesPage.showRouteEndpoints=function(h,g,d,c){var b=player.objects.get(1),f=b.objects.get(0),e=b.objects.get(1);
if(d){var a=dijit.byId("routeFrom");
if(a.value&&a.store._itemsByIdentity[a.value]&&a.store._itemsByIdentity[a.value].value&&a.store._itemsByIdentity[a.value].value.length>0&&a.store._itemsByIdentity[a.value].value[0].latitude){h=a.store._itemsByIdentity[a.value].value[0]
}a=dijit.byId("routeTo");
if(a.value&&a.store._itemsByIdentity[a.value]&&a.store._itemsByIdentity[a.value].value&&a.store._itemsByIdentity[a.value].value.length>0&&a.store._itemsByIdentity[a.value].value[0].latitude){g=a.store._itemsByIdentity[a.value].value[0]
}}if(h){f.set("coordinate",h);
f.set("visibility",true)
}else{f.set("visibility",false)
}if(g){e.set("coordinate",g);
e.set("visibility",true)
}else{e.set("visibility",false)
}};
RoutesPage.loadOtherExceptions=function(){var a="/resources/route/exceptions?c="+Common.getRouteServiceBySelection()+"&l="+djConfig.locale;
if(RoutesPage.exXhr){RoutesPage.exXhr.cancel()
}RoutesPage.exXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(c,b){RoutesPage.parseOtherExceptions(c);
return c
},error:function(){dojo.addClass("otherRouteExceptions","hidden")
},failOk:true})
};
RoutesPage.parseOtherExceptions=function(d){if(d.exceptions){var b='<span class="bold">'+labels.exception_info+"</span>:";
for(var a=0;
a<d.exceptions.length;
a++){b+=d.exceptions[a]+"<br>"
}var c=dojo.byId("otherRouteExceptions");
c.innerHTML=b;
dojo.removeClass(c,"hidden")
}};
RoutesPage.setShowBusStops=function(a){dijit.byId("showBusStops").attr("checked",a)
};
RoutesPage.selectTab=function(a){if(a==1){dijit.byId("tabContainer").selectChild("carRouteTab")
}else{if(a==2){dijit.byId("tabContainer").selectChild("walkRouteTab")
}else{if(a==3){dijit.byId("tabContainer").selectChild("busRouteTab")
}}}};
RoutesPage.setSinglePOIStyles=function(e){RoutesPage.singlePOIStyles=e;
var d=dojo.query("div.resultItem.id"+e.id)[0],g,b=dijit.byId("routeTo"),a=b.onChange,f,c;
dojo.place(d,"latestBoxContainer","first");
dojo.removeClass("latestBoxContainer","hidden");
dojo.addClass("latestBox","hidden");
if(e.address){g=e.address
}else{g=e.name
}b.onChange=function(){b.onChange=a
};
b.attr("value",g);
storeRouteLocation(RoutesPage.routeToStore,g,e.marker);
e.marker.AD4id=e.id;
addMarker(e.marker,null,player.objects.get(1));
player.objects.get(1).objects.removeAt(1);
player.objects.get(player.objects.getLength()-1).objects.removeAt(0);
dojo.byId("fav"+e.id).onclick=function(h){displayActionCommand(e.id,h,"latestBoxContainer");
Common.stopEvent(h)
};
c=dojo.byId("smallActionMenu");
if(c){c.innerHTML=RoutesPage.generateSmallActionMenu(e)
}else{f='<div id="smallActionMenu">';
f+=RoutesPage.generateSmallActionMenu(e)+"</div>";
dojo.place(f,d,"last")
}};
RoutesPage.generateSmallActionMenu=function(a){return"<div onclick=\"showInfoscreen('"+a.id+'\');"class="actionMenu clickable inlineFloatLeft"><img class="actionMenuIcon" src="blank16.png" />'+labels.actionmenu_infoscreen+"</div>"+generateActionCommands(a,"actionMenu","inlineFloatLeft","",true)
};
RoutesPage.updateSmallActionMenu=function(){dojo.byId("smallActionMenu").innerHTML=RoutesPage.generateSmallActionMenu(RoutesPage.singlePOIStyles)
};
RoutesPage.removeSinglePOIStyles=function(){dojo.query("#latestBoxContainer .resultItem").orphan();
dojo.removeClass("latestBox","hidden");
dojo.byId("routes").style.top="";
RoutesPage.createRouteEndpointMarker(player.objects.get(1),false,true,true,true);
RoutesPage.singlePOIStyles=null
};
RoutesPage.toChanged=function(){if(RoutesPage.singlePOIStyles){RoutesPage.removeSinglePOIStyles()
}};
RoutesPage.parseAd=function(c,e,a){try{Page.prototype.parseAd(c,e,"latestBoxContainer")
}catch(d){}var b=dojo.query("#latestBoxContainer div.resultItem.id"+e+" img.aImage")[0];
if(b){b.onload=function(){RoutesPage.resizeRoutesPane()
}
}RoutesPage.resizeRoutesPane()
};
RoutesPage.displayMessage=function(c,d,a){if(RoutesPage.singlePOIStyles){a="latestBoxContainer"
}try{Page.prototype.displayMessage(c,d,a)
}catch(b){}if(RoutesPage.singlePOIStyles){RoutesPage.resizeRoutesPane()
}};
RoutesPage.resizeRoutesPane=function(){var a=135-79+dojo.query("#latestBoxContainer div.resultItem.id"+RoutesPage.singlePOIStyles.id)[0].offsetHeight;
dojo.byId("routes").style.top=(a>135?a:135)+"px"
};
RoutesPage.createRouteEndpointMarker=function(d,g,a,c,f,e){var b=new ovi.mapsapi.map.Marker({latitude:0,longitude:0},{title:g?"Alku":"Loppu",icon:e?e:(g?"/logos/route_a.png":"/logos/route_b.png"),anchor:{x:19,y:35},draggable:a,eventListener:{dragend:[routeMarkerListener,false,null]}});
b.icon.setOpacity=function(){return this
};
b.set("visibility",f);
if(c){b.coordinate=d.objects.get(g?0:1).coordinate;
d.objects.set(b,g?0:1)
}else{d.objects.add(b)
}};
RoutesPage.loadStop=function(b){var a="/resources/pois/stop/"+b.datasource+"/"+b.stopCode+"?l="+djConfig.locale+"&u="+window.adforeObj.uid;
if(RoutesPage.stopLoadXhr){if(RoutesPage.stopLoadXhr.ioArgs&&RoutesPage.stopLoadXhr.ioArgs.url==a&&(RoutesPage.stopLoadXhr.fired||RoutesPage.stopLoadXhr.isFiring)){return
}else{RoutesPage.stopLoadXhr.cancel()
}}RoutesPage.stopLoadXhr=dojo.xhrGet({url:a,handleAs:"json",load:function(d,c){RoutesPage.items[d.item.id]=d.item;
for(var e=0;
e<RoutesPage.routeStops.length;
e++){if(RoutesPage.routeStops[e].id==b.id){RoutesPage.routeStops.splice(e,1);
break
}}for(e=0;
e<bookmarks.length;
e++){if(d.item.id==bookmarks[e].id){d.item.bookmarked=true;
break
}}RoutesPage.routeStops.push(d.item);
infoscreenActionMenu(d.item);
return d
},failOk:true})
};
RoutesPage.updateBookmarks=function(){};
